我的密码重置遇到问题,并且我收到此密码重置令牌的错误无效,我无法解决此问题:
我的控制器:
class ResetPasswordController extends Controller
{
use ResetsPasswords;
}
我的路线:
\Illuminate\Support\Facades\Auth::routes();
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.request');
我的观点:
<form class="form-horizontal" method="POST" action="{{ route('password.request') }}">
{{ csrf_field() }}
<input type="hidden" name="token" value="{{ $token }}">
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ $email or old('email') }}" required autofocus>
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label for="password" class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password" required>
@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
<label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
@if ($errors->has('password_confirmation'))
<span class="help-block">
<strong>{{ $errors->first('password_confirmation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Reset Password
</button>
</div>
</div>
</form>
我还添加了我的错误的屏幕截图,请也查看一下 解决方案将受到高度赞赏!
答案 0 :(得分:1)
我已经使用Laravel 7.x解决了这个问题。我认为Laravel 6.x是一样的!
$token = Str::random(64);
password_resets
表中创建一条记录,其令牌值为:bcrypt($token)
bcrypt()
是种子数据库时的函数创建密码)答案 1 :(得分:0)
由于令牌不正确,因此字符串长度应为64个字符,如下所示:
a8935edacb0711a304395c1f58979b545b4a636387053de6012e73048e5a60d2
在数据库的password_resets
表中,该表应被加密,如下所示:
$2y$10$YOdbMZk2N7xLsfXZIuMIv.ZayZQCB21L.GXVPdtt/WMOO1hJL7enO
将MAIL_DRIVER=
更改为log
,截断password_resets
表(如果在本地),然后重新设置密码,然后检查日志以阅读电子邮件并查看密码重置令牌是。复制该网址并将其粘贴到您的浏览器中,看看您是否仍然收到该错误,然后从那里获取。 :)
答案 2 :(得分:0)
我通过运行迁移解决了此问题。密码重置令牌列的类型错误。由于列的字符集/排序规则不正确,因此无法正确存储令牌。运行迁移,就可以了。
或 也许您的重置密码表格不包含电子邮件输入
答案 3 :(得分:0)
我遇到了不同的问题。
我在 auth.php 中的 latest
配置如下所示:
passwords
但我忘记在我的实时服务器上配置 AUTH_PASSWORD_EXPIRE .env 变量。