5

我正在使用一个简单的Zend_Auth设置来验证我的一个应用程序的用户,使用控制器插件中的 preDispatch() 方法的检查。当匿名用户导航到

/users/view/id/6

例如,它们应该在身份验证后重定向到上述 URI。

做这个的最好方式是什么?我不想存储$_SERVER['REQUEST_URI']在会话中。就个人而言,我会发现将整个 Zend Request 对象存储到最干净的解决方案中,但我不确定这是否明智,以及我是否应该采用这种方法。

有什么想法吗?

4

2 回答 2

1

我们遇到了同样的问题,实际上确实在会话变量中存储了请求 URI。如果您不将任何特定的、不可序列化的对象放入 Zend Request 中,我认为坚持它也可以。

但是,这取决于您期望的吞吐量。如果你有一个高流量的网站,序列化像 Zend Request 这样的对象可能不是最好的主意。

于 2008-11-12T16:00:41.030 回答
1

重定向或转发到 LoginController 可能不是将未经身份验证的用户带到登录页面的最佳方式。相反,在 preDispatch 中,您可以获取 $request 对象并通过执行以下操作来更改它。

$request->setActionName('someaction');
$request->setControllerName('somecontroller');

此时您的原始请求仍在维护中,但页面正在显示登录页面。然后您可以更改您的登录控制器以检查当前请求位置是登录控制器还是其他位置。如果成功登录时是其他内容(原始请求),请将它们发送到该页面。

于 2008-11-12T17:42:52.680 回答