我必须更改用户'根据我们的组织标准,表格到不同的表名称。它具有不同的密码列名。所以我的用户表将是'用户'和密码列名称将被加密密码'符合组织标准。
我没有任何引用 users
表的迁移。相反,我使用 User
表作为登录/注册等的基表。
请注意我正在使用以下用户提供商:
/vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php
我正在使用Laravel5.4并希望使用默认的LoginController和RegisterController。所以我进行了以下更改,以确保我的代码仍然可以使用新的用户表和密码列名。
(1)注册用户:
(1.1)Http / Controllers / Auth / RegisterController.php
$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; }
但是登录无法按预期工作。
在登录屏幕上,我看到电子邮件地址
下的错误消息'这些凭据与我们的记录不符。'
我错过了什么?