Laravel,为什么在路由文件(web.php)中使用Auth :: id()返回null?

时间:2019-07-29 04:57:16

标签: php laravel

我只是安装了新的laravel应用程序,然后继续通过php artisan make:auth进行身份验证

问题是即使我已经登录,dump(Auth::id())仍在路由文件(web.php)中返回null

如果

Route::get('test', function() { 
    dump(Auth::id()); }
);

它返回当前登录的用户ID。

因为我想基于路由文件(web.php)中已登录的用户ID进行查询。

例如(web.php)

$test = DB::table('tests')->where('user_id', Auth::id())->get();
dump($test) // returns empty because Auth::id() returns null

2 个答案:

答案 0 :(得分:0)

阅读laravel文档:https://laravel.com/docs/5.8/authentication

如果您想在不使用身份验证中间件的情况下获取用户ID,请尝试

对于默认后卫,

if ( auth()->check() )
    return auth()->id();

对于特定后卫,

if ( auth()->guard('guard-name')->check() )
    return auth()->guard('guard-name')->id();

答案 1 :(得分:-1)

您必须使用Auth::user()->id,因为Auth中没有预定义的id()。跨多个功能工作时,我没有遇到过您提到的任何功能。