【发布时间】:2015-07-01 06:38:19
【问题描述】:
我正在开发 laravel 5 电子商务门户网站。
当用户使用现成的脚本更新密码时,我遇到了问题。
问题是我可以毫无问题地将链接完美地发送给客户,客户也可以更改他的密码。但是当注销并重新登录时,我收到Invalid credentials的错误。
在我的 routes.php 中,我有这个:
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
这是登录页面:
<form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input type="email" class="form-control" name="email" value="{{ old('email') }}">
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input type="password" class="form-control" name="password">
</div>
</div>
<div class="form-group">
<div class="col-md-4"></div>
<div class="col-md-4">
<a href="{{url('/password/email')}}">Forgot Password</a>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary btn-block">Login</button>
</div>
</div>
</form>
重置密码后退出后无法再次登录。
编辑 1:
在登录表单页面点击登录按钮时,会调用postLogin方法。这是代码
public function postLogin( Request $request ) {
$this->validate( $request, [
'email' => ['required', 'exists:users,email,role,customer'],
'password' => 'required'
]);
$credentials = $request->only('email', 'password');
if ( \Auth::attempt($credentials) ) {
\Session::flash('logged_in', 'You have successfully logged in.');
return redirect('/');
}
return redirect('/login')->withInput($request->all())->withErrors(['email' => 'Invalid Email Address Or Password']);
}
编辑 2:
我只是意识到登录没有检查哈希,因此在更新密码并重新登录后执行dd(\Hash::check($request->password, $user->password)) 时返回false。这可能是什么问题?
我哪里做错了?请指导我。
提前致谢。
P.S.:我只使用默认值来更新密码,其余的,我已经制作了控制器和模型,它们都可以正常工作,没有任何问题。
【问题讨论】:
标签: php laravel-5 forgot-password