基本上这是我控制器的__construct。当非登录用户尝试访问该控制器中的路径时,他基本上被重定向到登录路由。到目前为止一切都很好 - 如果条件正常,重定向正在工作,路由正在运行。
接下来我尝试检查用户访问令牌是否有效,如果不是,我会将他重定向到注销路由 - 为了简化我的示例,我不这样做但我会检查$ test_var是否等于1并重定向到登录,因为我们已经知道这个路由名称正常。
首先 if($ test_var == 1),而不是第二个 if($ test_var == 1)触发器 - 没有重定向或死亡。
我甚至尝试过 if(1 == 1) ..
我甚至试图:
if(isset($this->userCredentials))
return redirect('login');
它仍然没有触发。这真的很奇怪,好像我没有先登录如果(!isset ... 正在工作并重定向,但是如果我这样做,那么这段代码就什么都不做了登录:
看起来如果是问题所在,但是如果超出量子理论的话呢?
这是构造的完整代码:
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);
}
答案 0 :(得分:1)
我认为,如果声明有效,问题就会出现重定向。至少在L4.2中我有同样的问题,只有重定向不起作用。
在laravel 4.2中的作品是send(),但我还没有在L5中使用它,所以如果有效的话,请尽量尝试:
return redirect('login')->send();
答案 1 :(得分:0)
您的会话未加载。将您的控制器__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,
];
答案 2 :(得分:-1)
将您的登录路线命名为login
,然后尝试:
重定向() - >路线( '登录');