【发布时间】:2021-07-07 03:15:35
【问题描述】:
我正在使用Auth::attempt($credentials) 来验证来自用户的登录数据。
$credentials = [
'user_name' => $request->user_name,
'password' => $request->password,
];
if (Auth::attempt($credentials)) {
return redirect()->route('admin.dashboard');
} else {
return redirect()->back()->with('status', 'Invalid credentials!');
}
如果用户输入了错误的密码或用户名,我会抛出一个无效的凭据错误。但是我想如果数据库中不存在用户,我可以抛出用户不存在的错误。
我的Auth::attempt($credentials) 返回真或假,所以我不知道该怎么做。你能帮忙吗?
【问题讨论】:
-
抛出 404 实际上可能被认为是一个安全漏洞,因为您将有关有效帐户用户名的信息暴露给潜在的攻击者。为什么要这样做?
-
这个问题可以改写成:“我如何检查用户是否已经存在”所以我建议调查一下:stackoverflow.com/questions/42416753/… 但正如@fubar 提到的,一个模糊的“用户名/密码不正确”应该足够;除非您正在注册,否则无需说明“用户名已被占用”。
-
非常感谢您的所有建议,我终于解决了问题。