我制作了一个控制器插件来处理身份验证。如果用户尝试在未登录的情况下访问页面,它会保存他尝试访问的页面的路由,转发到登录页面,然后当用户登录时,它将他重定向到他试图去的地方.
但是如果用户在退出时试图访问一个不存在的页面,那么它仍然会转发到登录表单,但是当用户登录时,它会带来一个错误。
如何在用户登录之前显示 404 错误?我想我需要在 dispatchLoopStartup() 中检测路由是否有效。我怎么做?还是有其他方法可以做到这一点?
class Chronos_Controller_Plugin_Auth extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
$request->setParam('userName', $auth->getIdentity());
} else {
$request->setParam('origModule', $request->getModuleName())
->setParam('origController', $request->getControllerName())
->setParam('origAction', $request->getActionName())
->setModuleName('default')
->setControllerName('sign')
->setActionName('in');
}
}
}