我正在使用laravel/ui与 Laravel 7.15.0 和 PHP7.3 为我的网站构建登录,但我在登录我的用户时遇到问题。
我的登录页面上有 remember_token 的复选标记选项。
我的登录页面上发生了什么
第一种情况:我的用户表中存在“remember_token”列
当我单击登录按钮时,它将很快对用户进行身份验证。如果我在我的 LoginController(由 laravel/ui 制作)的“authenticated”方法中转储“Auth::check()”,它将返回 true。但是,一旦将我重定向到我的主页,用户将不再登录。
当勾选“记住我”时,它会在我的用户表中的列中写入一个值。
第二种情况:我的用户表中不存在“remember_token”列,并且勾选了“记住我”框
现在这是奇怪的部分。当我没有该列时,登录时会抛出错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list'
但是当我导航到任何页面并在那里运行 Auth::check() 时,它返回 true,因此用户已经登录。
如果该框未被勾选,则其结果与第一种情况相同。
我试过的
到目前为止,我已经尝试研究 remember_token 在 laravel/ui 代码中是如何工作的。如果我没记错的话,甚至不需要使用令牌。
一些信息
我没有更改我的身份验证保护
我已经更改了 user.php 和 LoginController.php,因为我的 users 表具有不同的名称和列名。
我已将路由包装在“网络”中间件中,因为显然这可能是保持会话所必需的。
如有必要,我可以提供有关我的代码的更多信息。任何帮助,将不胜感激!
这是我的 User.php 文件:
class User extends Authenticatable
{
use Notifiable;
/**
* If timestamps should be used in the database.
*
* @var array
*/
public $timestamps = false;
/**
* The table where the users are stored.
*
* @var array
*/
protected $table = 'backend_user';
/**
* The primary key of the table.
*
* @var array
*/
protected $primaryKey = 'bck_userid';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'bck_userid', 'bck_fullname', 'bck_password', 'bck_email'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'bck_password',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
// protected $casts = [
// 'email_verified_at' => 'datetime',
// ];
public function getAuthIdentifierName()
{
return 'bck_email';
}
public function getAuthIdentifier()
{
return $this->bck_email;
}
public function getAuthPassword()
{
return $this->bck_password;
}
}
这是我的“用户表”的定义。它的名字是'backend_user':