2012-08-22 45 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或隐藏的表单元素)。 –