[英]laravel 8 how to get user id using bearer token
我正在使用 laravel 8,无论使用令牌还是不使用令牌,我都需要访问其中一个 API 路由,例如我有一个帖子页面,如果用户已登录,我想检查他是否喜欢该帖子,但如果他没有登录我只是显示帖子。
我编写了以下代码,但出现错误 500
$bearer=$request->header('Authorization');
if(isset($bearer)){
$fav=UserFav::where('user_id',request()->user()->id)->where('project_id',$id)->get();
if(!$fav->isEmpty())
$is_fav=true;
}
错误信息是
尝试在 null 上读取属性 ID
我理解它说 request()->user() 返回 null 的消息,那是因为路由不在密室中间件中
但问题是,如果我将路由放到 sanctum 中间件,我将无法以访客身份访问它,所以我如何根据标头中发送的承载令牌获取用户 ID 或用户?
尝试这个
if(!empty(request()->user())){ // Define user logged in
$fav=UserFav::where('user_id',request()->user()->id)->where('project_id',$id)->get();
} else {
$fav=UserFav::->where('project_id',$id)->get();
}
if(!$fav->isEmpty()) {
$is_fav=true;
}
Auth::check 将为您提供用户是否已通过身份验证的信息,即使您使用的是 brearer 令牌
use Illuminate\Support\Facades\Auth;
$is_fav = false;
if(Auth::check()) {
$is_fav = UserFav::where('user_id',Auth::user()->id)
->where('project_id',$id)
->exists();
}
我用的是护照而不是密室,我的做法是
auth('api')->user()->id
或者
$request->user()->id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.