问题:我想根据登录时的用户状态向用户显示不同的错误消息(使用ajax)。例如:如果用户状态为挂起,我想显示一条消息,否则如果禁用用户状态,我想显示另一条消息。只有活跃用户才能登录。
经过一番搜索后发现我可以使用识别方法
或
我应该在登录方法中使用“if
($this->Auth->login())
”条件中的写条件。
如果我在自定义组件中使用第一个方法(将扩展auth),希望它只能返回true或false,对吧?它可以设置错误消息并返回,以便我可以从我的控制器获取它吗?
如果我在允许用户登录后使用第二种方法,我应该检查状态,如果它不活动,我应该从Auth / Session中删除登录凭据。我怎样才能做到这一点 ?这是一个好方法吗?
还有其他更好的解决方案吗?我正在使用cakephp2.0
答案 0 :(得分:3)
我会为您的用户创建一个从BaseAuthenticate扩展的类,并在AppController中进行设置。
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => ..... ,
'logoutRedirect' => ..... ,
'loginAction' => ..... ,
'authenticate' => array('YourUsers'),
)
);
然后创建类
<?php
App::uses('BaseAuthenticate', 'Controller/Component/Auth');
class YourUsersAuthenticate extends BaseAuthenticate {
public function authenticate(CakeRequest $request, CakeResponse $response) {
// your code goes in here
}
}
您可以在身份验证中返回false以拒绝用户访问,也可以返回成功的对象,该对象将存储在$ this-&gt; Auth-&gt;用户中,您可以稍后进行interogate。
如果您遇到问题,CookBook会详细说明这一点。