【发布时间】:2012-10-12 21:44:18
【问题描述】:
在我的控制器中,我有一个 preDispatch 方法,用于检查用户是否已登录。如果未登录,我将用户重定向到登录表单。
有没有办法从 preDispatch 方法中禁用其中一个操作?因为我不需要这个动作的授权。
【问题讨论】:
标签: zend-framework zend-controller
在我的控制器中,我有一个 preDispatch 方法,用于检查用户是否已登录。如果未登录,我将用户重定向到登录表单。
有没有办法从 preDispatch 方法中禁用其中一个操作?因为我不需要这个动作的授权。
【问题讨论】:
标签: zend-framework zend-controller
在插件中,您可以检查是否正在调用特定的控制器和操作并允许请求继续。
您的插件中类似于以下内容的内容将起作用。
public function preDispatch(Zend_Controller_Request_Abstract $request) {
// ...
$controller = $request->getControllerName();
$action = $request->getActionName();
if ($controller == 'login' && $action == 'login') {
return ; // do not execute any more plugin code
}
// deny access and redirect to login form
【讨论】:
我通常使用“空”控制器/操作来执行此操作:
public function preDispatch(Zend_Controller_Request_Abstract $request) {
if (!$logined){
$request->setControllerName('empty')->setActionName('index');
return;
}
}
它替代了您当前的操作。
【讨论】: