【发布时间】:2019-09-09 19:24:16
【问题描述】:
我正在使用 laravel(使用 vue 和 vuex)在我的 Web 应用程序上创建忘记密码。我找到了一个很好的教程(https://codebriefly.com/vue-js-reset-password-laravel-api/),但遗憾的是它因为错误而无法重置密码
消息: 函数 App\Http\Controller\API\AuthController::callResetPassword() 的参数太少,通过了 0 恰好是 2 个预期
我不知道怎么解决。
代码
web.php
Route::get('/{any?}', function (){
return view('layout');
})->where('any', '^(?!api\/)[\/\w\.-]*');
routes.js
{
path: '/reset-password',
name: 'reset-password',
component: ForgotPassword,
meta: { middlewareGuest: true }
},
{
path: '/reset-password/:token',
name: 'reset-password-form',
component: ResetPasswordForm,
meta: { middlewareGuest: true }
},
AuthController.php(处理重置密码)
public function callResetPassword($user, $password)
{
$user->password = Hash::make($password);
$user->save();
event(new PasswordReset($user));
}
auth.js (Vuex)
resetPassword(data){
return new Promise((resolve,reject) => {
axios.post('/reset/password',{
token: data.token,
email: data.email,
password: data.password
})
.then(response =>{
resolve(response)
})
.catch(error =>{
reject(error)
})
})
}
ResetPasswordForm.vue
methods: {
...mapActions(["resetPassword"]),
reset() {
this.resetPassword({
token: this.$route.params.token,
email: this.email,
password: this.password
})
.then(response => {
toast.fire({
type: "success",
title: "Password reset successfully."
});
this.$router.push({ name: "login" });
})
.catch(error => {
swal.fire({
type: "error",
text: error.response.data.message,
showConfirmButton: false,
timer: 3000
});
});
}
}
}
【问题讨论】:
-
我们已经可以看出这与您的 Vue 应用程序无关。在您的某个地方调用 API
callResetPassword时不带任何参数。去看看那个文件并尝试追踪这个方法被调用的地方。如果找不到,请将答案中的 vue 代码替换为 API 的一些代码。 -
@ThomasVanderVeen 所以问题出在控制器上?
-
我看了你提供的教程。使用参数电子邮件、密码和重置令牌向此函数发出 Axios 发布请求。因此,请确保您确实将它们发送到您的控制器。
-
@DinoNumić 如何纠正错误?
-
@Peejong 我假设您实现了 axios 部分,因为您遇到了错误。您必须对其进行调试以找出它没有正确发送参数的原因。您可以对您的电子邮件和密码进行硬编码,以检查这是否有帮助。如果这有效,那么您就知道 Vue 没有从输入中获取值。用你的 axios 实现更新问题。
标签: javascript php laravel vue.js