2017-06-01 2 views
0

これは基本的に私のコントローラの__constructです。ログインしていないユーザがこのコントローラのアクセスルートを試行するとき、彼は基本的にログインルートにリダイレクトされます。これまでのところとても良い - 条件が働いていれば、リダイレクトが動作していて、ルートが動作しています。Laravel 5.4 If文が__construct()で機能しない

だから次の私は、ユーザーがトークンが有効であるアクセスかどうかを確認しようとそうでない場合、私はログアウトルートに彼をリダイレクトする - $のtest_varはと等しい場合は私の例を簡単にするために、私はこれをしない代わりに、私は確認してください1に変更し、ログインにリダイレクトします。すでにこのルート名が動作していることがわかっています。

どちら第場合($ test_var == 1)、第ない($ test_var == 1)トリガーなら - そこにはリダイレクトがいないか、または死にます。

私も(1 == 1)は、私もしようとした

..場合を試してみました:

if(isset($this->userCredentials)) 
     return redirect('login'); 

、それはまだトリガされません。 !場合のように見える

:私は最初にログインしていないよかのように(ISSET ...が作動し、リダイレクトしますが、私がログインしていた場合、コードのこの作品は、何もしないされている場合、それは本当に奇妙ですこの場合には、これは、構造物の完全なコード..ですobviosly量子論を超えて

問題があるが、:

namespace App\Http\Controllers; 

use Input; 
use Session; 
use Auth; 
use Redirect; 

class stackoverflowController extends ConnectionController 
{ 

public function __construct() 
{ 
    $this->middleware('auth'); 


    $this->userCredentials = Session::get('userCredentials'); 


    if(!isset($this->userCredentials)) 
     return redirect('login'); 

    $test_var = 1; 

    if($test_var == 1) 
     return redirect('login'); 

    if($test_var == 1) 
     die(1); 

    if(1 == 1) 
     die(1); 
} 

答えて

1

私が思うに、なステートメント作品ならば、問題はリダイレクトになります。少なくともL4に。 .2私は同じ問題を抱えていましたが、リダイレクトは機能しませんでした。

laravel 4.2作品で

は)(送信、私はそれが動作するかどうか試してくださいそうpleasy、まだL5でそれを使用するのdidnt:

return redirect('login')->send(); 
+0

ありがとうございます。それはこのように働いた。私はまだsend()を使わないでどこかのリダイレクトがなぜ動作するのか私の自己を説明することはできません。 –

+1

問題は、リダイレクトがコンストラクタで呼び出されることです。そして、それは何とかリダイレクトアクションを書き換えています。 –

+2

@コンストラクタから返される値はすべて無視されることに注意してください。これは、 'send'メソッドがおそらくリダイレ​​クトヘッダを送信した後にスクリプトを終了するためだけに機能します。 – Furgas

1

あなたのセッションがロードされていません。 - >ルート

リダイレクト():これを試してみてくださいloginとしてログインルートを

$this->middleware(function ($request, $next) { 
    $this->userCredentials = Session::get('userCredentials'); 

    if(!isset($this->userCredentials)) 
    return redirect('login'); 

    $test_var = 1; 

    if($test_var == 1) 
    return redirect('login'); 

    if($test_var == 1) 
    die(1); 

    if(1 == 1) 
    die(1); 

    return $next($request); 
}); 

にあなたのコントローラー__constructを編集したり

protected $middleware = [ 
    ... 
    \Illuminate\Session\Middleware\StartSession::class, 
]; 
0

名にアプリ\のHttp \ Kernel.phpを変更('ログイン');

+0

問題はリダイレクトではないため、ユーザーがログインしていない場合はリダイレクトされます。しかし、ユーザーがログインしている場合、次のIfは機能しません。彼らはまったくそこにいないのです。 –

関連する問題