CakePHP 3:如何在注册后自动登录用户

时间:2015-02-26 19:23:44

标签: cakephp cakephp-3.0

我正在尝试在注册后立即使用CakePHP 3登录用户,但我没有成功。这就是我在做的事情:

function register(){
    // ....
    if($result = $this->Users->save($user)){
        // Retrieves corresponding user that was just saved
        $authUser = $this->Users->get($result->id);

        // Log user in using Auth
        $this->Auth->setUser($authUser);

        // Redirect user
        $this->redirect('/users/account');
    }
}

2 个答案:

答案 0 :(得分:8)

我想发布这个问题让我眼前一亮。这就是我为了让它发挥作用所做的......如果有更好的方法,我很乐意改变它......

function register(){
    // .... Default CakePHP generated code

    if($result = $this->Users->save($user)){
        // Retrieve user from DB
        $authUser = $this->Users->get($result->id)->toArray();

        // Log user in using Auth
        $this->Auth->setUser($authUser);

        // Redirect user
        $this->redirect(['action' => 'account']);
    }
}

答案 1 :(得分:0)

CakePHP 3.8×cakephp/authentication更新。

  

在您呼叫AuthComponent::setUser()的任何地方,现在都应使用setIdentity()

// Assume you need to read a user by access token
$user = $this->Users->find('byToken', ['token' => $token])->first();

// Persist the user into configured authenticators.
$this->Authentication->setIdentity($user);

来源:/authentication/1/en/migration-from-the-authcomponent.html#checking-identities