CakePHP 3:如何正确检查用户是否已登录

问题描述 投票:6回答:3

在CakePHP 3中,我找到了两种方法来查找用户是否已登录。

1美分解决方案

if(!is_null($this->Auth->user('id'))){
        // Logged in
}

第二解决方案

if (!is_null($this->request->session()->read('Auth.User.id'))) {
    // Logged in
}

我认为第一个更好,因为它简洁明了。

有没有更好的方法来验证用户是否已登录?

我不是在寻找速度。我想用一种干净而富有表现力的方式来编写它。

php cakephp-3.0
3个回答
17
投票

我认为最好的方法就是:

if ($this->Auth->user()) {...}

1
投票

你可以使用session()助手来做到这一点。

$loggeduser = $this->request->session()->read('Auth.User');
if(!$loggeduser) {
    $userID = $loggeduser['id'];
    $firstName = $loggeduser['first_name'];
}

0
投票

在我的应用程序中,我总是使用这样的登录方法:

public function login() {
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
        if ($user) {
            $this->Auth->setUser($user);
            return $this->redirect($this->Auth->redirectUrl());
        }
        $this->Flash->error('Your username/password is not valid');
    }elseif ($this->Auth->user()) {
        return $this->redirect($this->Auth->redirectUrl());
    }
}

有了这个,如果用户被记录($ this-> Auth-> user())并且请求不是POST,我将重定向到默认URL。

© www.soinside.com 2019 - 2024. All rights reserved.