0

電子メールフィールドをパスワードリセットフォームから削除する必要があります。私は、ユーザーがすでにメールを確認しているので、パスワードを忘れたときに再びユーザーが自分のメールを再入力することを嫌います。この質問は何度か尋ねられていますが、質問のほとんどはまだ答えられておらず、他の質問は機能していません。私はこの議論を終えましたが、非常に危険なコアファイルの編集を提案しています。だから誰もそれはまだ解決策だとわかったのですか?Laravel 5.5パスワードリセットフォームから電子メールフィールドを削除

+0

リセットトークンを生成する方法がわかっている場合、トークンとemailidまたはトークンとユーザーIDの2つの変数を渡すことができるカスタムURLをユーザーに送信できます。 http://website.com/password/customreset/ {email}/{token} –

+0

これはセキュリティ機能として行われたと思います。トークンはパスワードと同様にハッシュされ、識別子(電子メール)を順番に必要としますアプリケーションがデータベース内でそれをどのハッシュと比較するかを知ることができます。電子メールにあるリンクをクリックするだけで十分な確認ができたら、トークンをハッシュする必要はありません。トークンを設定してチェックする機能をオーバーライドして、無作為なトークンを生成するようにしてください。コアファイルを編集しないでください。絶対に必要な場合は、拡張して上書きしてください。 – Chris

答えて

2

これは、あなたが今、手動

$email="[email protected]"; 
$token=hash_hmac('sha256', Str::random(40), env("APP_KEY")); 
DB::table('password_resets')->where('email', '=', $email)->delete(); 
DB::table('password_resets')->insert(
     ['email' => $email, 'token' => bcrypt($token)] 
    ); 

$tokenをリセットトークンを作成する方法ですが、URLを経由して送信され、bcrypt($token)がデータベースに保存されている暗号化されたトークンですトークンです。

トークンを取得した後は、単純に電子メールのフィールドを非表示にして、URLから$emailでフィールドを設定し、以前のものと同じになりますあなたの新しいパスワードのリセット]ページでhttp://website.com/password/newresetpage/{{$email}}/{{$token}}

のようなURLをユーザーに電子メールを送信することができます。

<form class="form-horizontal" role="form" 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> 


           <input id="email" type="email" class="form-control" name="email" value="{{$email}}" required hidden="true"> 


         <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> 
関連する問題