自己寫一個BasicController繼承了官方的Controller,將判斷登錄的代碼放在BasicController中,然后讓其他自己編寫的Controller都繼承BasicController。
這里使用了_initialize()方法。
class BasicController extends Controller { public function _initialize(){ //獲取登錄的cookie,正常則返回uid,沒有或異常則返回false,具體略 $uid = getUidByCookie(); //如果未登錄,或cookie有異常 if (!$uid) { $actionName = strtolower(ACTION_NAME); $controllerName = strtolower(CONTROLLER_NAME); switch ($controllerName) { case "task": //task控制器中的show、search、worker操作方法不需要登錄 if (!in_array($actionName, array("show", 'search', 'worker'))) { $this->error('需要登錄', U('User/login'), 1); exit; } break; case "user": //user控制器中的login、logout操作方法不需要登錄 if (!in_array($actionName, array('login', 'logout'))) { $this->error('需要登錄', U('User/login'), 1); exit; } break; } } } }
