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 从会话加载用户之前。因此,如果您在加载文件时调用它,您总是会从 A​​uth::check() 得到 false。这就是第一个路由定义无法按您的需要工作的原因。

在第二种情况下,A​​uth::check()在请求处理期间被调用,所以用户已经被加载并且你得到了你想要的结果。

如果您想根据用户是否经过身份验证来区分输出,您应该在控制器和return 不同的视图或视图中进行检查。