我正在尝试解决如何停止zend或重定向zend以转到不同的zend控制器和操作,如果启动带内的检查失败。
例如,get变量不存在或者更可能是会话不存在,这意味着用户必须登录。
因此用户最初请求了索引/某些操作
但我想让他们去登录/索引
在我的引导带中,我会放置条件,然后更改控制器操作以查看。
如果我以非标准的方式这样做,任何人都可以指导我阅读最佳实践的文档吗?
zend新手
答案 0 :(得分:4)
来自Zend documentation (Dispatcher)
// forward to an action in another controller:
// FooController::bazAction(),
// in the current module:
$this->_forward('baz', 'foo', null, array('baz' => 'bogus'));
答案 1 :(得分: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');
}
}
}
答案 2 :(得分:2)
我通常不会将身份验证放在bootstrap中,它应该拥有自己的控制器。
创建一个AuthController()来设置您的身份验证适配器并设置您的实例。
然后在一个公共视图中(对于安全页面),只需检查您的实例:
$auth = Zend_Auth::getInstance();
if(!$auth->hasIdentity())
{
#re-direct to login page
}