更改用户表和列以进行身份​​验证并在Laravel5.4中使用雄辩的驱动程序

时间:2017-08-07 18:24:13

标签: laravel laravel-5.4

我必须更改用户'根据我们的组织标准,表格到不同的表名称。它具有不同的密码列名。所以我的用户表将是'用户'和密码列名称将被加密密码'符合组织标准。

我没有任何引用 users 表的迁移。相反,我使用 User 表作为登录/注册等的基表。

请注意我正在使用以下用户提供商: /vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php

我正在使用Laravel5.4并希望使用默认的LoginController和RegisterController。所以我进行了以下更改,以确保我的代码仍然可以使用新的用户表和密码列名。

(1)注册用户:

(1.1)Http / Controllers / Auth / RegisterController.php

  • 在create()方法中更改了'密码'加密密码'反映密码的修改列名称。 (请注意我没有对登录UI的刀片模板进行任何更改)
$user = User::create([
   'name' => $data['name'],
   'email' => $data['email'],
   'encryptedPassword' => bcrypt($data['password'])
 ]);

(1.2)User.php(用户注册和登录功能的雄辩模型) - 添加了以下变量以指示用户和自定义密码列的自定义表名

protected $table = 'User';

protected $primaryKey = 'userId';

protected $encryptedPassword = 'encryptedPassword';

protected $fillable = [
        'name', 'email', 'encryptedPassword',
    ];

protected $hidden = [
        'encryptedPassword', 'remember_token',
    ];

还添加了一个返回正确密码列的方法

public function getAuthPassword()
{
        return $this->encryptedPassword;
}

注册后,用户不在laravel 5.4中工作

错误消息是:

  

SQLSTATE [42S02]:找不到基表或视图:1146表   ' homestead.users'不存在

(我使用homestead作为我的数据库名称)

(2)登录用户功能。

但是我还没有采用我认为应该做的以下更改。

(2.1)Http / Controllers / Auth / LoginController.php

添加了以下内容:

  

protected $encryptedPassword = 'encryptedPassword';

     

public function credentials(Request $request)
{ return $request->only($this->username(), $this->password());
}

还添加了这个:

 protected function password() {

       return $this->encryptedPassword;

   }

但是登录无法按预期工作。

在登录屏幕上,我看到电子邮件地址

下的错误消息
  

'这些凭据与我们的记录不符。'

我错过了什么?

0 个答案:

没有答案