javascript - 如果未通过身份验证,则在所有路由上重定向以登录

标签 javascript angularjs authentication

如果有人在未通过身份验证的情况下尝试访问任何其他路由,我该如何重定向到登录页面?在 AngularJS 中有没有“最好”的方法来做到这一点?

这似乎是一个常见问题,但我似乎找不到解决方法。预先感谢您的帮助。

最佳答案

执行此操作的最佳方法是设置一个“$routeChangeStart”监听器,它检查“authProvider”服务函数以验证是否有用户登录。在我们的“app.js”或单独的文件中:

angular.module('myApp')
     .run(['$rootScope', '$location', 'authProvider', function ($rootScope, $location,     authProvider) {
        $rootScope.$on('$routeChangeStart', function (event) {

        if (!authProvider.isLoggedIn()) {
          console.log('DENY : Redirecting to Login');
          event.preventDefault();
          $location.path('/login');
        }
        else {
          console.log('ALLOW');
        }
  });
}])

然后对于我们的“authProvider”服务:

angular.module('myApp')
  .factory('authProvider', function() {
    var user;
      return {
        setUser : function(aUser){
          user = aUser;
        },
        isLoggedIn : function(){
          return(user)? user : false;
        }
      };
  });

此解决方案是根据一个答案 here 创建的堆栈溢出。

谢谢@MohammadAwwaad

关于javascript - 如果未通过身份验证,则在所有路由上重定向以登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26145871/

相关文章:

angularjs - $location/html5和hashbang模式切换/链接重写

javascript - 在 Angular 中,如何从 li 中删除 "selected"类,然后将其应用到新的 li 中?

node.js - 为 api 访问生成安全 token

javascript - 如何更改clone.Node中父元素及其所有子元素的id

javascript - 尝试在 AngularJS 的 Controller 之间传递数据

java - 还有其他更好的方法来获取和比较数据库凭证与java吗?

google-chrome - 如何使用 FIDO U2F 允许用户通过我的网站进行身份验证?

javascript - 在 Firebase 上部署 Angular2 应用程序

javascript - EaselJS - 如何访问鼠标移动?

javascript - d3 选择具有特定类别的任何内容