在Auth :: attempt上禁用散列

时间:2017-11-01 15:53:22

标签: laravel authentication

我正在使用没有散列密码的旧数据库,此数据库也需要取消散列,因为它连接到Runnable JAR。

我做了所有事情,将它与Laravel 5.3连接起来并且它有效,但是..当登录时它总是返回false。

这是功能代码:

public function login(Request $request)
{
    $this->validate($request, [
        'account' => 'required|alpha_num|exists:accounts,account',
        'password' => 'required|alpha_num|min:4',
    ]);


    if(Auth::attempt(['account' => $request->account, 'password' => $request->password])){
        return redirect()->route('account');
    }

    return redirect()->back()->withInput();
}

我得出结论,Auth ::尝试通过视图哈希给定的密码,当与数据库中未散列的密码进行比较时,返回false。

我该如何解决这个问题?

谢谢。

2 个答案:

答案 0 :(得分:5)

您需要使用manual authentication的其他方法。

$user = User::where('account', $request->account)
            ->where('password', $request->password)
            ->first();

if($user) {
    Auth::loginUsingId($user->id);
    // -- OR -- //
    Auth::login($user);
    return redirect()->route('account');
} else {
    return redirect()->back()->withInput();
}

答案 1 :(得分:0)

您只需将其添加到您的应用程序/用户即可。
如果您在config / hashing.php中使用其他驱动程序-将bcrypt更改为argon / argon2i

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