gpt4 book ai didi

javascript - Angularfire ngRoute/解决问题,跳转到否则

转载 作者:行者123 更新时间:2023-11-29 16:03:57 26 4
gpt4 key购买 nike

我正在使用最新的 Angular + Firebase 并尝试设置登录授权系统。我有包含登录+注册链接的 home.html,转到 login.html 并添加凭据工作正常(提交时记录正确的 UID)但它应该路由到 dash.html 但返回到 home.html。

我发现这似乎是我的解析函数的问题,因为当我删除 .otherwise 时问题就消失了。但我认为我仍然想要(需要?)它。

如果我已登录(但重定向到 home.html),我仍然可以通过 URL 访问 dash.html,如果我在 dash.html 使用注销功能,我将无法再次访问它,这应该是这样的。但我不明白为什么我首先被重定向到 home.html。

这里是一些代码,任何帮助表示赞赏:

我的 .run、.config 和路由。

app.run(['$rootScope', '$location',
function($rootScope, $location){
$rootScope.$on('$routeChangeError',
function(event, next, previous, error){
if(error === 'AUTH_REQUIRED'){
$location.path('/home');
}
});
}]);

app.config(['$routeProvider', '$locationProvider', function($routeProvider,
$locationProvider){
$routeProvider

.when('/home', {
templateUrl: '/home.html',
controller: 'homeController'
})

.when('/login', {
templateUrl: '/login.html',
controller: 'loginController',
resolve: {
'currentAuth': ['Auth', function(Auth){
return Auth.$waitForAuth();
}]
}
})

.when('/dash', {
templateUrl: '/dash.html',
controller: 'dashController',
resolve: {
'currentAuth': ['Auth', function(Auth){
return Auth.$requireAuth();
}]
}
})

.otherwise({ redirectTo: '/home' });
}]);

我的登录 Controller :

app.controller('loginController', ['currentAuth', '$scope', '$firebaseAuth',    
'Auth', '$location', '$rootScope',
function(currentAuth, $scope, $firebaseAuth, Auth, $location, $rootScope){
var ref = new Firebase('https://url.firebaseio.com');
$scope.auth = $firebaseAuth(ref);

$scope.loginUser = function(){
$scope.auth = Auth;
$scope.auth.$authWithPassword({
email:$scope.email,
password:$scope.password
}, {
remember: 'sessionOnly'
}).then(function(authData) {
console.log('Logged in as: ', authData.uid);
$scope.auth.$onAuth(function(authData) {
$rootScope.auth = true;
$scope.auth = Auth;
$location.path('/dash.html');
})

}).catch(function(error) {
console.log('There was an error: ', error);
});
};
}]);

还有我的工厂和模块: var app = angular.module('app', ['firebase', 'ngRoute']);

app.factory('Auth', ['$firebaseAuth',
function($firebaseAuth){
var ref = new Firebase('https://url.firebaseio.com');
return $firebaseAuth(ref);
}]);

最佳答案

它与您的解决问题有关。

如果您查看文档 firebase doc你会看到他们使用

$waitForSignIn

$requireSignIn

函数。我知道,因为我也做过同样的事情。试试看,它应该可以工作

关于javascript - Angularfire ngRoute/解决问题,跳转到否则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36105423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com