Laravel路由使用Auth:check()数组,但失败


Laravel routing using array with Auth:check() but failed

我使用Laravel 5.1并尝试像下面这样编码我的路线

Route::get('quest', [
    'uses' => (Auth::check()) ? "RegisteredController@quest":"UnregisteredController@quest"
]
);

我想区分已登录用户的输出,但无法使其工作。无论用户是否登录,路由仍然会去'UnregisteredController'。但我的另一条路线,就像下面这条一样。

Route::get('login', function() {
if (Auth::check())
    return Redirect::intended('home');
return view('login');
});

谢谢

routes.php在应用程序启动期间加载-在请求处理开始之前和Laravel从会话加载用户之前。因此,如果在加载文件时调用Auth::check(),则总是得到false。这就是为什么第一个路由定义不能像你希望的那样工作。

在第二种情况下,在请求处理期间调用Auth::check(),因此user已经加载,并且您得到了您想要的结果。

如果您希望根据用户是否经过身份验证来区分输出,您应该在控制器中执行检查,并返回不同的视图,或者在视图中执行检查。