我最近开始学习 Laravel,正在研究这个密码重置 api,但是每当我点击登录页面上的忘记密码行时,我都会处理这个错误。
这是 web.php:
Route::get('/userPasswordChange', 'HomeController@changePassword')->name('userPasswordChange');
Route::post('/userPasswordChange', 'HomeController@changePasswordStore')->name('change.password');
这是 HomeController.php:
public function changePassword(){
return view('userPasswordChange');
}
public function changePasswordStore(Request $request)
{
$request->validate([
'current_password' => ['required', new MatchOldPassword],
'new_password' => ['required'],
'new_confirm_password' => ['same:new_password'],
]);
User::find(auth()->user()->id)->update(['password'=> Hash::make($request->new_password)]);
return redirect()->route('change.password')->with('success','Thay đổi mật khẩu thành công.');
}
这是 userPasswordChange.blade.php:
@extends('user.layouts.master')
@section('main-content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">Đổi mật khẩu</div>
<div class="card-body">
<form method="POST" action="{{ route('change.password') }}">
@csrf
@foreach ($errors->all() as $error)
<p class="text-danger">{{ $error }}</p>
@endforeach
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">Mật khẩu hiện tại</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="current_password" autocomplete="current-password">
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">Mật khẩu mới</label>
<div class="col-md-6">
<input id="new_password" type="password" class="form-control" name="new_password" autocomplete="current-password">
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">Xác nhận mật khẩu mới</label>
<div class="col-md-6">
<input id="new_confirm_password" type="password" class="form-control" name="new_confirm_password" autocomplete="current-password">
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
Cập nhật mật khẩu
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
感谢您的帮助!
注意:我确实尝试过缓存重置
您有当前路线
Route::get('/userPasswordChange', 'HomeController@changePassword')->name('userPasswordChange');
Route::post('/userPasswordChange', 'HomeController@changePasswordStore')->name('change.password');
在当前方法中
public function changePasswordStore(Request $request)
{
...
return redirect()->route('change.password')->with('success','Thay đổi mật khẩu thành công.');
}
正如您在重定向中看到的,它重定向到相同的 POST 路由
change.password
。如果这是您希望重定向的预期路线,您应该将其更改为您的获取路线userPasswordChange
。其他 GET 路线。
总长:
public function changePasswordStore(Request $request)
{
...
return redirect()->route('userPasswordChange')->with('success','Thay đổi mật khẩu thành công.');
}