2014-09-24 109 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
相關問題