cakephp自定义登录条件

时间:2010-12-31 14:35:49

标签: php cakephp login cakephp-1.3

我想检查一下,登录时是否激活了用户的帐户,但是蛋糕的Auth组件以我不知道如何控制的方式处理登录。 Cake基本上使用空白登录功能,我不知道如何检查User.active的值。

提前致谢

2 个答案:

答案 0 :(得分:11)

AuthComponent有一个属性,用于设置这样的附加条件,称为$ userScope。

只需在beforeFilter()Auth设置块中包含此行:

$this->Auth->userScope = array('User.active' => true);
  

注意:以上内容适用于Cake 1.x. 2.x使用:

$this->Auth->scope = array('User.active' =>true);

然后,您可以将登录方法留空,并且AuthComponent将在验证访问者时附加此额外条件。

您可以在此处查看所有其他属性: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

如果您不包含此额外范围,那么非活动用户仍然可以登录,并且您必须在检查后在login()方法中将其注销。

答案 1 :(得分:0)

在您的用户控制器上,或您要放置它的任何位置(登录表单链接到的操作):

function login() {
    if ($this->Session->read('Auth.User')) {
        $active = $this->Auth->user('active');
        if ($active) {
            //(do stuff)
        }
        else {
            //(do other stuff)
        }
    }
}

这假设您的用户表格中有一个“有效”列,其中包含 true false (或1或0)。 $ this-> Auth-> user()允许您访问当前登录用户的数据。更多信息请点击此处:http://book.cakephp.org/view/1264/user