2014-09-24 97 views
0

我已经为我的应用程序实现了一个身份验证系统。我使用$routeChangeStart(在运行中)检查用户是否已登录,如果没有,则将其重定向到登录。这工作正常。但是,我可以通过url访问登录页面,如果他已经登录,我想将用户发送到仪表板。有什么方法可以做到这一点?AngularJs - 跳过登录页面,如果已经登录

+0

检查,如果用户已经登录了$ routeChangeStart内,如有必要 – originof 2014-09-24 08:33:30

+0

我已经使用重定向吧!但是,如何检查我是否正在加载登录页面? – 2014-09-24 08:34:46

+0

好的,$ locationChangeStart的作品,谢谢!但是,如果这是做我正在尝试的标准方式? – 2014-09-24 08:49:42

回答

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
相关问题