问题是,如果我使用数据库中的adminPassword
值,登录将无法通过。
最初,在用户登录后,将提示他们更改其默认密码。
我们被问到为什么我的帐户无法访问此帐户的问题。
由于他们更改了密码,因此我们无法在更新其角色后检查他们是否已经具有访问权限。
所以,我的目标是放置一个adminPassword
,以便我可以登录他们的帐户并检查是否可以访问他们的帐户。
我尝试覆盖attemptlogin
。首先,if
将使用password
和email
检查凭据是否正确。 (正常登录)
如果未找到具有password
值的用户,则下一步是检查adminPassword
。 (类似管理员的登录名)我似乎无法解决此问题。
protected function attemptLogin(Request $request)
{
if($this->guard()->attempt($this->credentials($request), $request->has('remember')))
{
return true;
}
$email = request('email');
dump($email);
$password = request('password');
dump($password);
if(Auth::attempt(['email' => $email, 'adminPassword' => $password]))
{
return true;
}
// $credentials = array(['email' => $this->credentials($request)['email'], 'adminPassword' => \Hash::make($this->credentials($request)['password'])]);
// return $this->guard()->attempt(
// reset($credentials), $request->has('remember')
// );
}
使用adminPassword时,实际结果仍可以登录。
答案 0 :(得分:0)
我通过在密码值和数据库上的哈希密码上使用Hash::check()
方法之后手动登录用户来解决了这个问题。
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
if($this->guard()->attempt($this->credentials($request), $request->has('remember')))
return true;
$user = User::where('email', request('email'))->first();
if($user) {
if(\Hash::check(request('password'), $user->adminPassword)) {
Auth::login($user);
session()->put('justAdmin', true);
return true;
}
}
return false;
}