在Laravel路由组中未定义Auth :: user()

时间:2019-09-04 14:23:29

标签: laravel routing

我正在尝试获取身份验证用户数据并将其用于创建子域。

我发现,我可以在一条路线上获得需要的数据,例如:

Route::get('/', function ()
    if (Auth::user()) {
        return redirect()->route('home');
    }
    return view('user.login');
});

但是我无法获得小组比赛的数据。这样我得到空:

Route::group(['prefix' => 'dashboard'], function () {
    $id = Auth::id();
    Route::any($id.'/', 'myController@myAction')->name('some');

1 个答案:

答案 0 :(得分:1)

Route::get('/', function ()
    if (Auth::user()) {
        return redirect()->route('home');
    }
    return view('user.login');
});

它起作用是因为该功能在请求的生命周期中与控制器位于同一位置。依此顺序,AuthServiceProvider已经完成引导。

在第二个示例中,回调函数是路由提供程序的一部分,将在分配Auth::user()之前触发。

您应该做的是将其设置为静态,因为它仅是登录用户的路由。

Route::group(['prefix' => 'dashboard'], function () {
    $id = Auth::id();
    Route::any('/', 'myController@myAction')->name('some');

    Route::any('profile', 'myController@myAction')->name('some');

在您的控制器中,您可以恢复id

MyConrtoller.php

public function myAction()
{
    $id = \Auth::id();
}