0

我正在使用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 代码中是如何工作的。如果我没记错的话,甚至不需要使用令牌。

一些信息

  1. 我没有更改我的身份验证保护

  2. 我已经更改了 user.php 和 LoginController.php,因为我的 users 表具有不同的名称和列名。

  3. 我已将路由包装在“网络”中间件中,因为显然这可能是保持会话所必需的。

如有必要,我可以提供有关我的代码的更多信息。任何帮助,将不胜感激!

这是我的 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': 关联

4

0 回答 0