[英]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.