我正在使用Laravel 5.7和angularjs构建应用程序。我想通过ajax进行授权。登录和注册可以正常工作,但是重设密码不能正确工作。问题在于没有错误或成功回调消息。我注意到我的请求走了正确的路线,但随后将我重定向到我的主页。因此,在回应中,我总是得到我的索引页。
默认情况下,laravel会引发错误“我们无法找到具有该电子邮件地址的用户”。但是,如果您将使用ajax,它将不会抛出任何内容,而且我也不知道问题出在哪里,因为登录和注册会成功引发错误。
//HTML template
<form ng-submit="auth('{{ route('password.email') }}')">
@csrf
<div>
<div>Enter your e-mail</div>
<div>We will send you an email with a link to create a new password.
</div>
<div ng-repeat="error in authErrors.errors">@{{error[0]}}</div>
</div>
<div>
<label for="email">{{ __('E-Mail Address') }}</label>
<input name="email" ng-model="authInfo.email" type="email" required>
</div>
<button type="submit" name="submit">{{ __('Send Password Reset Link') }}</button>
</form>
//JS
$scope.authInfo = {
name: null,
email: null,
password: null,
passwordConfirmation: null,
remember: false
}
$scope.authErrors = {};
$scope.auth = function(route){
$http({
method: 'POST',
url: route,
data: $scope.authInfo
}).then(function(response) {
console.log($scope.authInfo);
console.log(response);
}, function(response) {
console.log($scope.authInfo);
$scope.authErrors = response.data;
console.log(response.data)
})
}
所有身份验证控制器均为默认控制器。
我也在透明项目上测试了ajax,并获得了相同的结果。
如果我不发送电子邮件作为数据,它将引发错误,表明没有电子邮件。但是,如果我发送电子邮件,我将得到重定向。
我希望获得与注册和登录功能相同的结果。
有什么建议可以解决这个问题吗?
答案 0 :(得分:0)
符合预期,因为此函数在成功和失败情况下都将返回html。您要做的就是覆盖下面的功能-
public function sendResetLinkEmail(Request $request)
{
if($request->ajax()) {
$this->validateEmail($request);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$request->only('email')
);
return $response == Password::RESET_LINK_SENT
? [
'msg' => 'Successful'
]
: [
'msg' => 'Reset email sending failed.'
];
}
return [
'msg' => 'Un-expected method calls'
];
}
将函数放入ForgotPasswordController