我正在使用没有散列密码的旧数据库,此数据库也需要取消散列,因为它连接到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。
我该如何解决这个问题?
谢谢。
答案 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);
}