今天有人问到这个,今天临下班本子的无线上网竟然不好用了,也没来得急告诉人家,真是。。。
共享出来,省得更多人问相同的问题。
例如:如果网站当中总共有三个模块,管理员模块,会员中心模块,前台模块
1. 使用继承Zend_Controller_Action方法
定义如下:
Zend_Controller_Action |--By_Controller_Admin
|
|--By_Controller_User
|
|--By_Controller_Front
在管理员控制器中:
class By_Controller_Admin extends Zend_Controller_Action
{
public function init()
{
//如果未登录则跳转到管理员登录页面
//
}
//更抽象的初始化
}
?>
class Admin_HomeController extends By_Controller_Admin
{
public function init()
{
//如果需要更细节的控制就需要在这里进行重写
}
}
2. 使用Plugins方法
class By_Controller_Plugin_InitProject extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$this->_checkAdminPermit($request);
// Others
}
/**
* 管理员认证检测
*
* @param Zend_Controller_Request_Abstract $request
* @return void
*/
private function _checkAdminPermit(Zend_Controller_Request_Abstract $request)
{
$redirector = new Zend_Controller_Action_Helper_Redirector();
if($request->getModuleName() == 'admin' && $request->getActionName() != 'login')
{//action必须判断,否则会进入派遣死循环。
$login = false;
if(! $login/** 管理员未登录 */)
{
/** 跳到管理员登录页面 */
$redirector->direct('login', 'home', 'admin');
}
}
}
// Other methods.....
}
完
阅读(1912) | 评论(1) | 转发(0) |