CakePHP 3:如何正确检查用户是否已登录
CakePHP 3: How to properly check if a user is logged in
在 CakePHP 3 中,我发现了两种判断用户是否登录的方法。
第一个解决方案
if(!is_null($this->Auth->user('id'))){
// Logged in
}
第二解
if (!is_null($this->request->session()->read('Auth.User.id'))) {
// Logged in
}
我认为第一个更好,因为它简短。
是否有更好的方法来验证用户是否已登录?
我不一定追求速度。我想要一种干净且富有表现力的方式来编写它。
我认为最好的方法是:
if ($this->Auth->user()) {...}
您可以使用 session()
助手来做到这一点。
$loggeduser = $this->request->session()->read('Auth.User');
if(!$loggeduser) {
$userID = $loggeduser['id'];
$firstName = $loggeduser['first_name'];
}
在我的应用程序中,我总是使用这样的登录方法:
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.
在 CakePHP 3 中,我发现了两种判断用户是否登录的方法。
第一个解决方案
if(!is_null($this->Auth->user('id'))){
// Logged in
}
第二解
if (!is_null($this->request->session()->read('Auth.User.id'))) {
// Logged in
}
我认为第一个更好,因为它简短。
是否有更好的方法来验证用户是否已登录?
我不一定追求速度。我想要一种干净且富有表现力的方式来编写它。
我认为最好的方法是:
if ($this->Auth->user()) {...}
您可以使用 session()
助手来做到这一点。
$loggeduser = $this->request->session()->read('Auth.User');
if(!$loggeduser) {
$userID = $loggeduser['id'];
$firstName = $loggeduser['first_name'];
}
在我的应用程序中,我总是使用这样的登录方法:
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.