2017-07-26 10 views
0

Laravelプロジェクトで基本認証システムを作成するのにphp artisan make:authを使用しました。Laravel Auth条件付きリダイレクト

ホームページ私は正しい形式を入力すると正常に動作するログインフォームでブートストラップモーダルを作成しました。ログインしてホームページにリダイレクトされました。

しかし、私が間違った詳細を入力すると、ページがちょうど読み込まれたので隠されている明らかにエラーメッセージがモーダルウィンドウにあるので、何が間違っているのか分かりません。そして私はエラーを見るために再びモーダルを開く必要があります。

だから私は(モーダルなし)基本的なログインフォームが正しくエラーを確認することです/ログイン URLに私をリダイレクトする(フォームの検証が失敗する)エラーの場合には私のLoginController(または何でも)を編集したいと思います。

+0

追加のログインページを避けることができるようにビューページでエラーが発生した場合は、Jqueryイベントを起動してモーダルを開くことができます –

+0

ありがとうございますが、それは避けたい解決策です。 – Nebster

答えて

1

LoginControllerには、デフォルトのメソッドAuthenticatesUsersを上書きできます。たとえば、ユーザー名/メールアドレスとパスワードが一致しないときにエラーを処理sendFailedLoginResponse()を上書きすることができます

/** 
* Get the failed login response instance. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\RedirectResponse 
*/ 
protected function sendFailedLoginResponse(Request $request) 
{ 
    $errors = [$this->username() => trans('auth.failed')]; 

    if ($request->expectsJson()) { 
     return response()->json($errors, 422); 
    } 

    return redirect()->to('/login') 
     ->withInput($request->only($this->username(), 'remember')) 
     ->withErrors($errors); 
} 

したがって、上記のコードはapp/Http/Auth/LoginControllerにする必要があります。コードはデフォルトコードと同じですが、ユーザーは/loginにリダイレクトされます。

これはフォーム検証エラーでは機能しません。そのため、validateLogin()メソッドを上書きする必要があります。

0

この場合、Laravelの認証ルートにAJAXコールを使用することをお勧めします。ログインが成功した場合は、Javascriptを使用して自宅にリダイレクトするか、同じログインポップアップで検証エラーを表示してください。

このような場合には、これが最良かつ推奨される方法です。

インターネット経由で多数の投稿があります。 LaravelでAJAXログインを検索するだけです。