我正在将旧项目(在zend框架中完成)迁移到laravel 5.5。数据库是mongo db。我正在使用laravel-mongodb连接laravel和mongo。
我已经覆盖了laravel登录功能,因为表字段与默认的laravel字段不同。登录工作正常。
目前,当我尝试重置密码时,我收到错误消息"我们无法找到具有该电子邮件地址的用户"。如何覆盖重置密码功能?
在用户表中,字段名称为usrEmail和usrPassword。登录的工作代码如下。
目前,当我尝试重置密码时,我收到错误消息We can't find a user with that e-mail address.
如何覆盖重置密码功能?
在用户表格中,字段名称为usrEmail
和usrPassword
。登录的工作代码如下。
LoginController.php
protected function attemptLogin(Request $request)
{
$authUser = User::where('usrEmail', $request->email)
->whereIn('usrlId', [1, 2, 5, 6])
->first();
if($authUser) {
$password = md5(env('MD5_Key'). $request->password. $authUser->usrPasswordSalt);
$user = User::where('usrEmail', $request->email)
->where('usrPassword', $password)
->where('usrActive', '1')
->where('usrEmailConfirmed', '1')
->where('is_delete', 0)
->where('usrlId', 2)
->first();
if ($user) {
$updateLoginTime = User::find($user->_id);
$updateLoginTime->lastlogin = date('Y-m-d H:i:s');
$updateLoginTime->save();
$this->guard()->login($user, $request->has('remember'));
return true;
}
else {
return false;
}
}
return false;
}
答案 0 :(得分:0)
尝试将其放入您的Auth/ResetsPasswordController.php
protected function credentials(Request $request)
{
$data = $request->only(
'password', 'password_confirmation', 'token'
);
$data['usrEmail'] = $request->get('email');
return $data;
}
默认情况下,->only(
还包括email
字段,但是由于它在数据库中是不同的,因此我们需要覆盖此功能,该功能默认情况下是在ResetsPasswords
特性中定义的。
这应该确保密码重设流程中的任何email
字段(在单击电子邮件链接后,在请求电子邮件和表单时)都指向数据库中的正确字段。