簡體   English   中英

Laravel 5.4 If語句在__construct()中不起作用

[英]Laravel 5.4 If statement doesn't work in __construct()

基本上,這是我的控制器的__construct。 當未登錄的用戶嘗試在該控制器中嘗試訪問路由時,他基本上會被重定向到登錄路由。 到目前為止一切正常-如果條件正常,重定向正常,路由正常。

所以下次我嘗試檢查,如果用戶訪問令牌是有效的,如果它不是我會將他注銷路線-簡化我的例子,我不這樣做,而是我是否$ test_var等於1並且重定向到登錄 ,我們已經知道此路由名稱有效。

既不是第一個if($ test_var == 1) ,也不是第二個if($ test_var == 1)觸發器-沒有重定向或死亡。

我什至嘗試過if(1 == 1) ..

我什至試圖:

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

而且仍然不會觸發。 真的很奇怪,好像我沒有先登錄if(!isset ...正在工作並重定向,但是如果我登錄,這段代碼什么都不做:

看起來好像是If的問題,但是這個If卻超出了量子理論的范圍。

這是該構造的完整代碼:

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);
}

我認為,如果陳述有效,問題將直接轉向。 至少在L4.2中,我有同樣的問題,只有重定向不起作用。

在laravel 4.2中可以使用send(),但是我還沒有在L5中使用它,所以請嘗試一下是否可以使用:

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

您的會話尚未加載。 編輯Controller __construct

$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);
});

或將您的app \\ Http \\ Kernel.php更改為

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

將您的登錄路線命名為login然后嘗試以下操作:

重定向() - >路線( '登錄');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM