javascript - AngularJS - 如果没有 token 则过渡到登录状态

标签 javascript angularjs

如果 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

,请建议我将代码重定向到登录页面

“ApplicationStorage”工厂就像

 .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;
}])

最佳答案

我以前做过,所以你绝对可以让它发挥作用。

我推荐 angular-local-storage凉亭中的模块。而不是直接制作自己的“ApplicationStorage”。调试更少。

如果你想在 AngularJS 中做一个重定向,将 $location 注入(inject)你的 Controller 并试试这个:

angular.module('app').factory('User', localStorageService) {

  return {
    getCurrentUser: function() {
      return localStorageService.get('currentUserId');
    },
    setCurrentUser: function(id) {
      localStorageService.set('currentUserId', id);
    }
 });

然后在你的 Controller 中

angular.module('app').controller('SignInController', $location, function(User) {
  if (!User.getCurrentUser()) {
    // change the path
    $location.path('/loginForm');
  }
});

或多或少是这样的。它可能无法复制/粘贴/工作

关于javascript - AngularJS - 如果没有 token 则过渡到登录状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30097639/

相关文章:

javascript - 我希望 Ember.js 的 {{input value ="searchTerm"}} 在 URL 更改时将其值设置为 ' '

javascript - 如何通过浏览器开发工具知道用户已到达页面末尾

javascript - 如何更改出现验证错误的选项卡的选项卡指示器颜色?

javascript - 如何将所有国家/地区的列表填充为选择多个,然后确定选择了哪些国家

angularjs - 使用嵌套指令时,ng-click 在第一次使用 $compile 后停止工作

javascript - 在 angularJs 中动态加载模块

angularjs - 如何使 Angular 主布局中的 Controller 在路线更改时运行?

javascript - 仅从 insideHTML 中删除文本

javascript - 为什么 .on() 不适用于页面上未预加载的链接?

javascript - 在 ui-grid 中格式化页脚值