【发布时间】:2021-11-20 19:50:32
【问题描述】:
$validator = Validator::make($request->all(), [
'email' => 'required|min:9|max:50|email',
'password' => 'required|min:8|max:255|password'
]);
if ($validator->fails()) {
echo "Failed! Sorry :(";
Session::flash('error', $validator->messages()->first());
//return Redirect::back()->withErrors($validator);
}
else {...
但如果我写
'password' => 'required|min:8|max:255'
验证通过了,但是当我写的时候
'password' => 'required|min:8|max:255|password'
它没有通过,结果是“失败!对不起:(”。我的意思是我上面写的回声有效。
可能是什么问题?还是“密码”过多?我是 Laravel 的新手。
重要!数据库中的密码正在被哈希保存。
【问题讨论】:
-
if ($validator->fails(){ dd($validator->errors()); };这应该告诉你为什么你的验证失败了,所以你可以进一步调试它???? -
谢谢。但它说我已经知道我自己的逻辑,问题是密码不正确。但事实是密码在现实中是正确的,只是代码不想同意。
-
password规则检查当前经过身份验证的用户。如果您在登录时使用它,当当前没有经过身份验证的用户时,这将不起作用。删除password规则,验证存在/长度,然后在验证后使用auth()->check()。 -
auth()->check()获取电子邮件/用户名和未经哈希处理的密码,并检查这是否是尝试登录的用户的正确密码。你可以做类似if(!auth()->check($request->input('email'), $request->input('password')){ return back()->with('error', 'Incorrect Password'); } -
我可能有错误的方法,
attempt而不是check,必须仔细检查,但这是一般的想法;验证存在/长度,检查是否正确,登录。
标签: php laravel validation