尝试登录时是否可以检查“ adminPassword”?

时间:2019-01-29 10:27:03

标签: laravel

问题是,如果我使用数据库中的adminPassword值,登录将无法通过。

最初,在用户登录后,将提示他们更改其默认密码。

我们被问到为什么我的帐户无法访问此帐户的问题。

由于他们更改了密码,因此我们无法在更新其角色后检查他们是否已经具有访问权限。

所以,我的目标是放置一个adminPassword,以便我可以登录他们的帐户并检查是否可以访问他们的帐户。

我尝试覆盖attemptlogin。首先,if将使用passwordemail检查凭据是否正确。 (正常登录)

如果未找到具有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时,实际结果仍可以登录。

1 个答案:

答案 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;
}