Javascript AngularJS-如果没有令牌,则转换为登录状态

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

如果Auth.isAuthenticated()在刷新页面后返回false,我想重定向到登录页面

.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
。只是开玩笑。很高兴与您联系。