2016-03-25 9 views
0

私は角度のあるアプリケーションを構築しており、パスワードリセットを実装したいと考えています。しかし、デフォルトのlaravel configは、純粋なXMLHttpRequest($ http.post)要求を使用してこれを行うことを許可しないように見え、302リダイレクトで応答します。Laravel:リダイレクトレスポンスを受け取らずにパスワードをリセットする

上記メソッドをauthControllerクラスに実装してjsonレスポンスを返すことで、リダイレクトを発行せずにpostLoginとpostRegisterを動作させることができました。これにより、上記のメソッドのデフォルトのlaravel実装がオーバーライドされます。そのようなpostEmailの運はありません。その方法はまったくヒットしないようですが、私はちょうど302の応答をただちに返します。

理想的には、自分の電子メールを確認する以外に、ユーザーが単一ページの角度アプリケーションを放置しないようにすることは理想的です。 1.ユーザーは電子メールをポストするために電子メールをポストします - >リセットリンク付きの電子メールまたはより良い「リセットコード」が電子メールアドレスに送信されます - >ユーザーはリセットされたトークンコードを既に開いているWebアプリケーションに入力します。完了すると、新しいタブで開いたパスワードのリセットページを参照してください。

私は、次のようなpostEmailメソッドを実装してみました:

また
public function postEmail(Request $request) 
      { 

       $this->validate($request, ['email' => 'required|email']); 

       $response = Password::sendResetLink($request->only('email'), function (Message $message) { 
        $message->subject($this->getEmailSubject()); 
       }); 

       switch ($response) { 
        case Password::RESET_LINK_SENT: 


         return response()->json(['msg' => 'A reset link has been sent to your E-mail'], 200); 

        case Password::INVALID_USER: 


         return response()->json(['msg' => 'This E-mail cannot be found in our system'], 200); 
       } 
      } 

、どこlaravelを送り出すことをリセットリンクをEメール用のテンプレートがありますか?

+0

'postEmail()'メソッドを拡張するには、 'PasswordController'を作成する必要があります。 – Jeemusu

答えて

1

App\Http\Controllers\Auth名前空間内にPasswordControllerを作成して、パスワードリセットメソッドを拡張することができます。

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Contracts\Auth\Guard; 
use Illuminate\Contracts\Auth\PasswordBroker; 
use Illuminate\Foundation\Auth\ResetsPasswords; 

class PasswordController extends Controller 
{ 
    use ResetsPasswords; 

    public function postEmail(Request $request) 
    { 

    } 

} 

あなたはapp/views/emails/auth directoryでreminder.blade.phpを作成することができる電子メールテンプレートを上書きする、またはapp/config/auth.php configにテンプレートファイルの場所を変更します。

関連する問題