将默认 Laravel 身份验证电子邮件字段更改为 user_email

Change the default Laravel authentificaton email field to user_email

当我将 email 字段从数据库更改为 user_email

时出现

Laravel 错误

Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause' (SQL: select * from ns_users where email = admin@yahoo.com limit 1)

Schema::create('ns_users', function (Blueprint $table) {
        $table->increments('user_id');
        $table->boolean('active')->default(0);/*by default the user is not active*/
        $table->integer('role')->default(0);/* role 0 means user and role 1 means admin!! */
        $table->string('name');
        $table->string('user_email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
});

有人知道我必须在默认身份验证中更改什么才能使用 user_email 字段而不是 email 吗?

默认情况下,Laravel 使用 email 字段进行身份验证。如果您想自定义它,您可以在 LoginController:

上定义一个 username 方法
public function username()
{
    return 'user_email';
}
public function getEmailAttribute()
    {
        return $this->user_email;
    }

适合我

以防你们中的任何人使用尝试方法手动处理 laravel 身份验证。 您需要做的就是将密钥名称 'email' 更改为您在传递给尝试方法的关联数组中所需的名称。

Auth::attempt(['user_email' => $email, 'password' => $password], $remember)