Javascript AngularJS-如果没有令牌,则转换为登录状态
如果Auth.isAuthenticated()在刷新页面后返回false,我想重定向到登录页面Javascript AngularJS-如果没有令牌,则转换为登录状态,javascript,angularjs,Javascript,Angularjs,如果Auth.isAuthenticated()在刷新页面后返回false,我想重定向到登录页面 .run(['Auth', '$state', function(Auth, $state) { if (!Auth.isAuthenticated()) { $state.go('login'); } }]); 服务Auth中我的isAuthenticated方法正确返回true或false service.isAuthenticated = fu
.run(['Auth', '$state', function(Auth, $state) {
if (!Auth.isAuthenticated()) {
$state.go('login');
}
}]);
服务Auth中我的isAuthenticated
方法正确返回true或false
service.isAuthenticated = function() {
var token = ApplicationStorage.getJwtToken();
return token ? true : false;
};
但这对我不起作用。如果isAuthenticated()
返回false,请建议我将代码重定向到登录页面
而“应用程序存储”工厂就像
.factory('ApplicationStorage', ['store', 'APP_CONSTANTS', function(store, APP_CONSTANTS) {
var service = {};
/**
* Store token in service variable when rememberMe is false
* @type {String}
*/
service.token = '';
service.getJwtToken = function() {
return this.token ? this.token : store.get(APP_CONSTANTS.JWT_TOKEN_KEY);
};
service.storeJwtToken = function(token, rememberMe) {
// if remember me then store the token in local storage
if (rememberMe) {
store.set(APP_CONSTANTS.JWT_TOKEN_KEY, token);
}
this.token = token;
};
return service;
}])
我以前做过,所以你肯定能让它工作 我推荐bower中的模块。而不是直接制作自己的“应用程序存储”。要调试的代码更少 如果要在AngularJS中执行重定向,请将
$location
注入控制器并尝试以下操作:
angular.module('app').factory('User', localStorageService) {
return {
getCurrentUser: function() {
return localStorageService.get('currentUserId');
},
setCurrentUser: function(id) {
localStorageService.set('currentUserId', id);
}
});
然后在你的控制器里
angular.module('app').controller('SignInController', $location, function(User) {
if (!User.getCurrentUser()) {
// change the path
$location.path('/loginForm');
}
});
差不多是这样的。它可能不会复制/粘贴/工作应用程序存储的工作方式。getJwtToken()函数的工作方式?
应用程序存储
是一个工厂。我编辑并添加了有问题的pateldoes控制台
显示任何错误?无控制台错误valverdeOk Cole。我将使用本地存储在本地存储中存储令牌。如果本地存储中不存在令牌,建议重定向到登录页面。你的解决方案对我有效。但为什么是$state.go('login');不为我工作这是个好问题我也不知道答案。我记得我遇到过这个问题,只是使用$location:-)你的答案行不通。您没有在注入参数中添加$location
。只是开玩笑。很高兴与您联系。