如果引导带中的检查失败,我正在尝试解决如何停止 zend 或重定向 zend 以转到不同的 zend 控制器和操作。
例如,get 变量不存在或更可能会话不存在,这意味着用户必须登录。
所以用户最初请求 index/someaction
但我希望他们去登录/索引
在我的引导带中,我会放置条件,然后将控制器操作更改为查看。
如果我以不标准的方式执行此操作,任何人都可以指导我查看有关最佳实践的文档吗?
zend新手
如果引导带中的检查失败,我正在尝试解决如何停止 zend 或重定向 zend 以转到不同的 zend 控制器和操作。
例如,get 变量不存在或更可能会话不存在,这意味着用户必须登录。
所以用户最初请求 index/someaction
但我希望他们去登录/索引
在我的引导带中,我会放置条件,然后将控制器操作更改为查看。
如果我以不标准的方式执行此操作,任何人都可以指导我查看有关最佳实践的文档吗?
zend新手
// forward to an action in another controller:
// FooController::bazAction(),
// in the current module:
$this->_forward('baz', 'foo', null, array('baz' => 'bogus'));
我建议您使用插件来检查每个页面的访问权限,并为登录创建一个身份验证控制器。
在这里,您将了解如何执行此操作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');
}
}
}
我通常不会将身份验证放在引导程序中,它应该有它自己的控制器。
创建一个 AuthController() 来设置您的身份验证适配器并设置您的实例。
然后在一个通用视图中(对于安全页面),只需使用以下内容检查您的实例:
$auth = Zend_Auth::getInstance();
if(!$auth->hasIdentity())
{
#re-direct to login page
}