我使用简单的Zend_Auth设置来验证我的某个应用程序的用户,使用controller plugin中的preDispatch()方法进行检查。当匿名用户导航到
时/users/view/id/6
例如,在验证后,应将它们重定向到上面的URI。
最好的方法是什么?我不想在会话中存储$_SERVER['REQUEST_URI']
。就个人而言,我发现将整个Zend Request对象存储到最干净的解决方案中,但我不确定这是否合理,如果这是我应该采取的方法。
有什么想法吗?
答案 0 :(得分:1)
我们遇到了同样的问题,实际上在会话变量中存储了请求URI。 如果你没有将任何特定的,不可序列化的对象放入Zend Request中,我认为它也可以坚持下去。
然而,这取决于您期望的吞吐量。如果您拥有高流量网站,那么序列化Zend Request等对象可能不是最好的选择。
答案 1 :(得分:1)
将重定向或转发到LoginController可能不是将未经过身份验证的用户带到登录页面的最佳方式。相反,在preDispatch中,您可以获取$ request对象并通过执行以下操作来更改它。
$request->setActionName('someaction');
$request->setControllerName('somecontroller');
此时您的原始请求仍在维护,页面正在显示登录页面。然后,您可以更改登录控制器以检查当前请求位置是否为登录控制器或是否为其他位置。如果是成功登录的其他内容(原始请求),则将其发送到该页面。