AngularJs - 如果已登录则跳过登录页面

时间:2014-09-24 08:30:40

标签: angularjs angularjs-routing

我为我的应用实施了身份验证系统。我使用$routeChangeStart(在运行中)检查用户是否已登录,如果没有,则将其重定向到登录。这很好用。但是,我可以通过网址访问登录页面,如果他已经登录,我想将用户发送到仪表板。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

伙计们尝试这个优雅的解决方案:

.run(function ($rootScope, $location, authService) {
        $rootScope.$on('$stateChangeStart', function (ev, to, toParams, from, fromParams) {
            if (to.requireAuth && !authService.isAuthed()) {
                $location.path("/login");
            }
            else if (to.name == 'login' && authService.isAuthed()) {
                ev.preventDefault();
                $location.path("/dashboard");
            }
        });
    })
  • 如果用户未登录并且需要登录,则会重定向到 登录。
  • 如果用户尝试登录并且他已经登录, 阻止他这样做。
  • 将每条路径标记为" requireAuth"而且它 将工作。
  • 将您的代码放在app.js

答案 1 :(得分:0)

尝试

$rootScope.$on('$locationChangeStart', function(event, newUrl, oldUrl) {}); 

此处详细信息https://docs.angularjs.org/api/ng/service/$location