在 cake 2.0+ 中,您需要手动调用 auth login 方法,所以这样的事情应该可以工作:
function login()
{
if (isbadtoken($this->request->data['User']['Token']))
{
return;
}
// login user etc..
if ($this->Auth->login())
{ /* ... */ }
}
在以前的蛋糕版本中,auth login 已经在您的代码之前被调用,所以这样的事情是必要的:
function login()
{
if (isbadtoken($this->request->data['User']['Token']))
{
// since auth doesn't know about about token,
// log out the user in case auth login was successfull
$this->Auth->logout();
return;
}
if (!$this->Auth->user())
{
/* user is not logged in */
return;
}
/* user is logged in */
}
更好的解决方案可能是让 auth 组件知道令牌并以某种方式将其包含在登录过程中,但如果这样做太复杂,那么上面的内容应该不会给您带来麻烦。