php - laravel 8如何使用不记名令牌获取用户ID
问题描述
我正在使用 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 中间件中
但是如果我将路由放到 sanctum 中间件,我将无法以访客身份访问它,那么我如何根据标头中发送的不记名令牌获取用户 ID 或用户?
解决方案
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();
}
推荐阅读
- swift - 是否可以将枚举值与“if”语句进行比较?
- javascript - 通过 Python 将 SQL 查询返回到 JavaScript?
- angular - 在 ngFor 中隐藏/显示页面加载时的单个项目
- android - Studio 核心中的 Android Studio 3.2 canary 异常,StackOverflowError
- ios - 如何将imageView添加到collectionViewCell中的scrollView
- android - 从任务管理器刷应用程序时 fcm 通知如何工作
- python - 在函数中使用 .filter
- html - 为什么文本居中时不显示我的文本?
- java - 以二叉搜索树格式存储数据的硬拷贝
- java - Spring依赖会导致内存问题吗?