【发布时间】:2018-11-09 05:07:14
【问题描述】:
我有控制器方法存储并为该方法定义了 api 路由。当我尝试从 $request 存储信息时,一切正常,但当前用户 ID。 Auth::user() 返回空值。如何获取该 ID?
【问题讨论】:
我有控制器方法存储并为该方法定义了 api 路由。当我尝试从 $request 存储信息时,一切正常,但当前用户 ID。 Auth::user() 返回空值。如何获取该 ID?
【问题讨论】:
根据@Rahul Reghunath 在How to get current user in Laravel API using Passport? 中的回答
您可以尝试使用此方法访问 api 中间件中的用户 id:
auth('api')->user();
一个例子:
Route::get("me",function (){
$userInfo=auth('api')->user();
if ($userInfo!==null)
{
return "User is logged in. id:".$userInfo->id;
}else{
return "User is not logged in.";
}
});
对我来说,它在使用不记名令牌进行身份验证时显示了 id:
User is logged in. id:6
【讨论】:
首先,您需要确保“api 用户”已登录以获取 ID。您可以使用 auth()->user()->id 或 Auth::user()->id 来获取当前用户 ID。
【讨论】:
如果您尝试通过自定义身份验证(不是 laravel 提供的默认身份验证),那么您所有需要身份验证的路由都应该使用 web 中间件。
Route::group(['middleware' => 'web'], function () {
// your routes
});
然后您可以使用任一方法获取 Active 用户 ID
Auth::user()->id
或
auth()->user()->id
【讨论】:
Laravel 默认使用 laravel 助手或 laravel 静态方法为当前用户提供。示例: 默认=>
\Auth::user();
如果你为此使用了任何防护,那么就使用
\Auth::guard('guard_name')->user();
如果你使用过 api 那么你可以通过
auth('api')->user() //it's a laravel helper
这个是api路由,上面两个是web路由
【讨论】: