2012-08-22 71 views
8

在AngularJS中,我有一個登錄控制器,如果用戶到達頁面並且沒有登錄,那麼應用程序中的每個頁面都會重定向到該登錄控制器。在登錄序列後,我想重定向用戶回到他們來自的頁面。什麼是最好的方法來做到這一點?將舊位置保​​存在$rootScope?重定向到'/login?returnto=' + $location.path()?是否有內置函數?重定向到引用者

回答

5

您可以使用$rootScope或定義一個服務來保存舊的位置。這是一個SO post,對比兩種方法。我個人不喜歡在網址中添加returnto=

此博客文章,Authentication in AngularJS,可能是你感興趣的。請注意Vojta(AngularJS作者之一)在該博客上發表的關於使用$rootScope的評論 - 他建議使用服務。

+1

如果登錄頁面不是由角度 – JustGoscha

+1

@JustGoscha處理的頁面,那麼使用cookie或服務器端會話對象來存儲原始頁面。成功登錄後,檢查cookie的存在或從會話中提取頁面並將其發送到瀏覽器(例如,作爲一些JavaScript或隱藏的表單元素)。 –