6

我正在为旧版本的 Android (2.3.x) 构建一个 web/phonegap 应用程序。在我尝试将任何服务器重定向添加到组合中之前,一切都很好。这是场景:

服务器(node.js)有一个在“/”处监听的路由。当这条路由被命中时,它会检查是否存在会话。如果没有会话,它会重定向到 /login。很好,这部分有效(无论如何,服务器方面)。

当客户端获得重定向时,就会出现问题。因为Android 2.3 不支持history.pushState,它回退到hashbangs。这意味着 AngularJS 将 url 重写为 /#!/login,这会导致服务器请求到 '/',这会导致服务器检查会话并重定向到 '/login',这会导致 AngularJS 将 url 重写为 /#!/登录..等等等等..无限期。

任何想法如何使用 AngularJS 从服务器重定向?我不应该在我的路由中处理这个逻辑,而是尝试在客户端上实现它吗?我敢肯定,必须有一种方法来处理这个问题,但我似乎无法弄清楚。

任何帮助将不胜感激。谢谢!!

4

2 回答 2

1

使用一个简单的对象来命令重定向:
如果用户没有登录,返回{action: "redirect" url:"/login"}

然后在客户端,得到响应后,检查action == 'redirect'$location.path(url)

于 2013-02-15T08:38:51.330 回答
0

如果您纯粹在客户端进行身份验证会更好。在角端开始时进行 ajax 调用,询问我们是否已登录。如果没有,提示用户输入信息(可能在模式对话框中),然后将其发布到服务器上的“/登录”。

为了安全起见,任何对身份验证敏感的信息都不应存储在客户端。相反,使用 ajax 检索它 - 如果用户未正确登录,则使用 401 或一些错误回复 ajax。

于 2013-02-07T14:16:24.697 回答