我正在运行CakePHP v2.4,文档显示了几个用于控制内置Auth组件行为的自定义选项。但是,我没有看到有关在login()或logout()之后添加回调的任何信息。
我需要与这些操作一起运行其他一些例程,并且对于该代码而言,使用集中式回调而不是在调用login()或logout()的每个地方重写它都会更加干扰。
答案 0 :(得分:3)
按照@Eisa Adil的建议扩展AuthComponent
很好,但我建议使用Event。您将添加App::uses('CakeEventManager', 'Event');
,您的扩展登录方法可能如下所示:
function login($user = null) {
CakeEventManager::instance()->dispatch(new CakeEvent('Auth.beforeLogin', $this, array('user' => $user)));
$loggedIn = parent::login($user);
CakeEventManager::instance()->dispatch(new CakeEvent('Auth.afterLogin', $this, array('user' => $user)));
return $loggedIn;
}
您可以在custom event listener中定义回调,这样您就可以在控制器外部拥有许多听众(插件很方便),甚至可以在某些情况下决定停止活动。
答案 1 :(得分:0)
class UsersController extends AppController {
function afterLogin($successfully){
if($successfully == true){
// do something if logged successfully
}else{
// do something if not
}
}
}