2016-11-08 10 views
0

基本的な問題は、Laravel 5.3がゲストユーザーを '/ login'ルートにリダイレクトすることです。 Handler.php 'を私のインデックスに'/'、私はログインページがない/ログインがインデックスに位置しています。彼が訪れたとき、彼がログインしていないので、ゲストユーザは、無限ループのインデックスファイルにリダイレクトされます。この変更後Laravel 5.3 - 'login'ルートの代わりに 'guest redirect'を 'index'に変更

... 
return redirect()->guest('/'); 
... 

:後

protected function unauthenticated($request, AuthenticationException $exception) 
{ 
    if ($request->expectsJson()) { 
     return response()->json(['error' => 'Unauthenticated.'], 401); 
    } 

    // IMPORTANT LINE 
    return redirect()->guest('/login'); 
} 

:前

'/'経路に移動し、再び '/'にリダイレクトされます。

私は解決策は簡単だろう、私は次のようにリダイレクトする前に、ファイル内の現在のURLを確認するだろうと思った:

if ($_SERVER['REQUEST_URI']) !== '/') 
{ 
    return redirect ('/'); 
} 

これは働いていなかったので、私はそれをlaravel方法を試みた:

if (!$request()->is('/')) 
{ 
    return redirect ('/'); 
} 

同じbehavour /例外:

ErrorException in VerifyCsrfToken.php line 136: 
Trying to get property of non-object 
+0

それが認証されたユーザーであるか、何がない –

+0

かどうかを判断するために、 ')認証されていないユーザーを処理すると、ビューのページにあなたが(認証::ユーザー'を確認することができDMZコントローラを作成する必要があります。 DMZコントローラ? –

+0

DMZコントローラの意味は、認証を受けていないコントローラです。認証のないコントローラ –

答えて

1

私はあなたのインデックスのルート・ロードというようなものを想定してあなたのホームページには、あなたが変更したことで、ホームページコントローラの認証ミドルウェアを削除する必要があります。そうすれば、アプリは今のように無限ループに陥るでしょう。あなたの変更に固執するには、ルートコントローラの認証ミドルウェアにコメントを書いただけです。

public function __construct() 
    { 
    // $this->middleware('auth'); 
    } 
+0

まあ、私はコメントアウトが悪い解決策だと思う。実際、私はすでにミドルウェアが問題を引き起こしていることを知っていました。 –

+0

Authミドルウェアのもとでホームルートやインデックスルートを保護する必要がない場合、ルートコントローラでそのラインを保持するポイントは何ですか?それは私には分かりません。この問題を処理するには多くの方法がありますが、カスタムミドルウェアを作成する方法は1つありますが、単純なif文を使用してルートコントローラから処理します。 –

関連する問題