Php 密码重置在验证时不返回错误消息
重置密码后,用户将收到带有密码重置链接和令牌的电子邮件。 通过打开此链接,用户将看到密码重置表单(视图) 在这之前一切都很好。。但每当我通过错误的电子邮件触发“电子邮件无效”错误警告时,它都不会给我任何信息 检查Php 密码重置在验证时不返回错误消息,php,laravel,laravel-5,laravel-blade,laravel-5.8,Php,Laravel,Laravel 5,Laravel Blade,Laravel 5.8,重置密码后,用户将收到带有密码重置链接和令牌的电子邮件。 通过打开此链接,用户将看到密码重置表单(视图) 在这之前一切都很好。。但每当我通过错误的电子邮件触发“电子邮件无效”错误警告时,它都不会给我任何信息 检查C:\Users\richa\Projects\globeguru\cms\vendor\laravel\framework\src\illighted\Foundation\Auth\ResetsPasswords.php我在第3行遇到了responsibe函数: php 这一行:
C:\Users\richa\Projects\globeguru\cms\vendor\laravel\framework\src\illighted\Foundation\Auth\ResetsPasswords.php
我在第3行遇到了responsibe函数:
php
这一行:
$request->validate($this->rules(), $this->validationErrorMessages());
这就引出了这个函数:
protected function validationErrorMessages()
{
return [];
}
我的问题是-如何触发错误消息并通过validationErrorMessages()
函数返回它?
[编辑]
根据要求,这里是重置表单HTML
@节('reset-form')
@if(会话(“状态”))
成功强>
{{session('alert')}
&时代;
@恩迪夫
@错误('电子邮件')
错误强>
{{$message}}
&时代;
@恩德罗
@错误('密码')
错误强>
{{$message}}
&时代;
@恩德罗
@错误('password\u confirmation')
错误强>
{{$message}}
&时代;
@恩德罗
{{{{('auth.reset{u title')}
@csrf
{{{('auth.email')}
@错误('电子邮件')
{{$message}}
@恩德罗
{{{('auth.password')}
@错误('密码')
{{$message}}
@恩德罗
{{{{('auth.password\u repeat')}
@错误('password\u confirmation')
{{$message}}
@恩德罗
@端部
同时转储$errors
我得到以下响应:
{"token":["The token field is required."]}
提供了@csrf
,所以我不知道还有什么原因会导致这种情况
更新#2
好的,我只是惊慌失措,在reset
函数中的每个步骤上放置dump
,当我在验证之前放置它时,如下所示:
公共功能重置(请求$Request)
{
转储($request);//验证($this->rules(),$this->validationErrorMessages());
//在这里,我们将尝试重置用户的密码。如果成功,我们将
//将更新实际用户模型上的密码并将其保留到
//否则我们将解析错误并返回响应。
$response=$this->broker()->reset(
$this->credentials($request),function($user,$password){
$this->resetPassword($user,$password);
}
);
//如果成功重置密码,我们将用户重定向回
//应用程序的主身份验证视图。如果有错误,我们可以
//将它们重定向回其错误消息所在的位置。
return$response==Password::Password\u RESET
?$this->sendResetResponse($request,$response)
:$this->sendResetFailedResponse($request,$response);
}
它返回带有请求的页面
转储,并显示以下消息:重定向到http://localhost:8000/password/reset/a98f717fd25f4c5b32e2ee81e1276058e294ea6536509d1a223d131bcc0dd12c.
这清楚地表明在验证和重置之间存在重定向
如果我在之后转储,它不会返回任何内容,因此它清楚地表明它在$request->validate($this->rules(),$this->validationErrorMessages())期间中断代码>此步骤
以下是Laracasts讨论链接:
好的,我通过更改html来修复它:
@csrf
为此:
@csrf
dump($request->all())
返回:
array:5 [▼
"_token" => "RlwpqsSHcN42PaEWvIMHCYjjowAnox8ApTA9eeUV"
"token" => "2fb28348a08eac8386a2276be5a7ed5a2847adef39b4ed769157e2213bc208c9"
"email" => "admin@demo.com"
"password" => "password"
"password_confirmation" => "password"
]
Redirecting to http://localhost:8000/login.
因此,现在这可以工作了,虽然我知道令牌
和\u令牌
不同,一个用于seision,另一个用于密码重置,我仍然不明白我的解决方案与原来的Laravel Auth
有什么不同,那里只有@csrf
命令被调用,然后由Blade编译,返回所有必要的隐藏输入。你能为视图显示代码吗?只需摘录电子邮件字段中的错误消息处理就可以了。
array:5 [▼
"_token" => "RlwpqsSHcN42PaEWvIMHCYjjowAnox8ApTA9eeUV"
"token" => "2fb28348a08eac8386a2276be5a7ed5a2847adef39b4ed769157e2213bc208c9"
"email" => "admin@demo.com"
"password" => "password"
"password_confirmation" => "password"
]
Redirecting to http://localhost:8000/login.