Laravel Passport鉴权:通过Token获取当前用户数据的API开发问题
无需传递用户ID,通过Laravel Passport Token获取用户数据的实现方案
1. 修改路由,添加Passport认证中间件
先去掉路由里的用户ID参数,给路由加上auth:api中间件——这个中间件会自动校验请求头里的Authorization Token:
// api.php Route::get('/user', [userData::class, 'get_all'])->middleware('auth:api');
2. 修改控制器方法,直接获取认证用户
不需要再接收User参数,auth:api中间件验证Token通过后,Laravel会自动把对应用户实例注入请求上下文,你直接通过Auth门面或request()助手就能拿到用户数据:
// userData.php use Illuminate\Support\Facades\Auth; public function get_all() { // 获取当前认证的用户 $user = Auth::user(); // 也可以用 request()->user() 拿到同样的结果 // $user = request()->user(); return response()->json([ 'user' => $user, ]); }
原理说明
当请求头携带Authorization: Bearer {你的Token}时,auth:api中间件会解析并验证Token,验证通过后,Laravel会自动将Token关联的用户实例存入认证系统,此时你通过Auth::user()就能直接拿到该用户的全部数据,完全不用手动传递或查询用户ID。
内容的提问来源于stack exchange,提问作者vivek kn
相关产品推荐
相关产品推荐

