我对同一个网址使用多个视图,具体取决于用户是否登录..所以mywebsite.com的路由如下:
Route::get('/', 'HomeController@redirector')->name('home');
控制器是:
public function redirector(){
if(!\Auth::check()){
return view('welcome');
}
else{
return $this->index();
}
}
现在,当它运行索引功能时,我需要它来运行中间件' auth',它会更新并检查用户。问题是,我不能将它附加到路由,因为它们可能未被记录导致重定向循环。我试过这个:
public function redirector(){
if(!\Auth::check()){
return view('welcome');
}
else{
$this->middleware('auth');
return $this->index();
}
}
它不运行中间件。
如果我将它放在将其附加到索引的costructor方法中,就像这样:
$this->middleware('auth', ['only' => 'index'])
它也不会跑。
对此有何解决方案?
答案 0 :(得分:0)
if(!\Auth::check()){..} //this returns false if a user is logged in, are you sure that's what you want?
如果没有,则删除'!'
您也可以将重定向逻辑放在中间件中。如果您使用的是Laravel附带的auth中间件,那么这已经到位了。您只需要修改它,如下所示,并将中间件调用放在构造函数中。
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->guest()) {
return redirect()->guest('login');
}
return $next($request);
}