在Cakephp Auth组件读取数据库之前更改详细信息

时间:2011-10-17 09:06:02

标签: cakephp components authentication

此处是否有人知道如何在Auth组件读取数据库之前更改用户名?

我遇到的问题是我使用手机号码作为登录但我想在登录我的网站时添加国家代码(如果不存在)

有人对此有所了解吗?

将不胜感激

2 个答案:

答案 0 :(得分:2)

如果您使用的是CakePHP 2.0,则可以像往常一样操作登录表单数据,然后调用$this->Auth->login()。例如:

// in your controller
public function login() {
    if ($this->request->is('post')) {
        $this->data['User']['username'] = $this->addCountryCode($this->data['User']['username']);

        if ($this->Auth->login()) {
            // login successful
        } else {
            // login not successful
        }
    }
}

答案 1 :(得分:1)

您可以随时扩展Auth组件并在询问数据库之前执行您想要的操作:)

像这样......

function login($data = null,$public = false) {
    $this->__setDefaults();
    $this->_loggedIn = false;

    if (empty($data)) {
        $data = $this->data;
    }

    if (/** query the database to check/modify the data. You could use the identify() method of the AuthComponent **/) {
        $this->Session->write($this->sessionKey, $user);
        $this->_loggedIn = true;
    }
    return $this->_loggedIn;
}

如果扩展auth组件,请记住始终使用此组件而不是默认的Auth类。 (例如在AppController中,build_acl,initdb,控制器上的beforefilter等)

希望这有帮助