如何防止Laravel在密码重置页面上更改电子邮件?
我已输入电子邮件:
<div class="col-md-6">
<input id="email" readonly type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ $email ?? old('email') }}" required autofocus>
@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
我粘贴了属性readonly
,但输入的电子邮件为空。如何传递电子邮件用户并阻止更改电子邮件?
在ResetPasswordController中,我有:
public function showResetForm(Request $request, $token = null)
{
$email = //getUserEmail ?
return view('auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
/**
* Get the password reset validation rules.
*
* @return array
*/
protected function rules()
{
return [
'token' => 'required',
'email' => 'required|email|exists:users,email',
'password' => 'required|confirmed|min:6',
];
}
如何更改当前重置密码的用户电子邮件上的$request->email
?
答案 0 :(得分:0)
如果我很好地解决了您的问题,您想显示电子邮件,但以只读格式显示重置密码页面。我建议您采取某种方式。随时使用。
解决方案1:,在内部,ResetPasswordController-> showResetForm()
$password_resets = DB::table('password_resets')->get();
foreach($password_resets as $password_reset)
{
if (Hash::check($token, $password_reset->token)) { // checking hash match with requested token
// here if hash match with token
$email = $password_reset->email;
}
}
在这里,我们正在遍历password_resets表,并检查reset password token
与表中的实际hashed token
是否匹配。您可以像这样轻松地在$email
内使用reset.blade.php
:
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ isset($email) ? $email : '' }}" required readonly>
解决方案2:
在发送密码重置电子邮件时,您可以将电子邮件作为base64_encode
进行传递,并且可以在重置密码时使用base64_decode
进行访问。
希望,这对您有帮助。享受编码:)