防止在密码重置时更改电子邮件laravel 5.7

时间:2018-12-29 09:37:50

标签: php laravel

如何防止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

1 个答案:

答案 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进行访问。

希望,这对您有帮助。享受编码:)