5

如果引导带中的检查失败,我正在尝试解决如何停止 zend 或重定向 zend 以转到不同的 zend 控制器和操作。

例如,get 变量不存在或更可能会话不存在,这意味着用户必须登录。

所以用户最初请求 index/someaction

但我希望他们去登录/索引

在我的引导带中,我会放置条件,然后将控制器操作更改为查看。

如果我以不标准的方式执行此操作,任何人都可以指导我查看有关最佳实践的文档吗?

zend新手

4

3 回答 3

4

来自Zend 文档 (Dispatcher)

// forward to an action in another controller:
// FooController::bazAction(),
// in the current module:
$this->_forward('baz', 'foo', null, array('baz' => 'bogus'));
于 2010-10-26T14:47:40.723 回答
4

我建议您使用插件来检查每个页面的访问权限,并为登录创建一个身份验证控制器。

在这里,您将了解如何执行此操作http://alex-tech-adventures.com/development/zend-framework/61-zendauth-and-zendform.html

一个例子:

class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract 
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        // ...

        if(!$auth->hasIdentity())
        {
            $request->setControllerName('authentication')
                 ->setActionName('login');
        }
    }
}
于 2010-10-26T17:20:44.643 回答
2

我通常不会将身份验证放在引导程序中,它应该有它自己的控制器。

创建一个 AuthController() 来设置您的身份验证适配器并设置您的实例。

然后在一个通用视图中(对于安全页面),只需使用以下内容检查您的实例:

$auth = Zend_Auth::getInstance();     
if(!$auth->hasIdentity())      
{
#re-direct to login page
}
于 2010-10-26T14:45:09.580 回答