2013-07-12 37 views
4

我設法得到工作安全認證,所以基本上我做了重定向到登錄路線是用戶沒有登錄。AngularJS:重定向到登錄頁面,但記住初始位置?

這是工作很好,但我想知道如果有人正在做一些類似的,一次我已重定向到登錄頁面,我想在他們通過身份驗證後回到原始頁面。 Asp.net mvc在查詢字符串中使用returnUrl執行此操作,但這真的很難看。

所以我有。

/items // this show my items.. 
/login // this is the login view. 

因此,如果用戶進入/項目,在我目前重定向到登錄查看,但一旦成功登錄已經發生則沒有登錄,我需要將用戶重定向到他想要去原即/項目

我這樣做目前

$rootScope.$on("$routeChangeStart", function (next, current) { 

     if (!authentication.getIsLoggedIn()) 
      $location.path('/login'); 

    }); 

如果我不能夠傳遞原始URL或存儲它的一些一個人如何再成功登錄已經發生了,我會不知道從哪裏發送用戶。

喜歡聽到任何反饋意見。

謝謝

+3

看起來你非常接近'$ routeChangeStart',爲什麼不儲存'next'值,然後在完成登錄後重定向到那個值呢? –

+0

您可以使用名爲redirect的參數並設置您需要重定向到的url。 – Abilash

+0

嗨NuclearGhost,你能詳細說明一下嗎?我完成登錄後如何重定向? – Martin

回答

1

同意@NuclearGhost,你超級密切。我通過擁有一個僅維護next值的AppLevel控制器來處理這個問題,並通過redirectTo()將它們放回到他們經過身份驗證之後去的地方。

+0

嗨,感謝您的回覆。所以,如果我目前明白這一點,我需要一個屬性,我可以設置和獲取AppLevel控制器,我想我需要能夠從不同的控制器訪問此屬性...所以,如何設置一個Applevel控制器和從登錄控制器調用它的屬性?你能進一步闡述一下嗎? – Martin

+0

首先,在閱讀各種評論時,我認爲我不得不使用下一個注入onroutechangestart的變量,但準備好了一點,我現在看到,這與它無關,我將不得不親自管理這個屬性。 – Martin

+0

「AppLevel服務」可能是更好的選擇。雖然應用程序級控制器是可能的,但他們似乎不鼓勵。請參閱:http://stackoverflow.com/a/17778495/1620112 –