在我的routes/api.php文件中,我有这样的内容:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
})->name('api.user');
这是可行的,我甚至能够访问Auth::user(),当我使用下面的内部路由/api.php:
Route::middleware('auth:api')->group(function () {
// our routes to be protected will go in here
Route::post('/example', [ExampleController::class, 'example'])->name('example.api');
});
这就把我们带到了示例控制器中的示例函数,在这里我可以访问:
Auth::user()->id;
到目前为止,一切都很好。但是,当我尝试在routes/web.php中使用Passport身份验证时,如下所示:
Route::middleware('auth')->group(function () {
Route::name('google.index')->get('google', [ExampleTwoController::class, 'index']);
});
我无法访问ExampleTwoController的索引函数中的以下内容:
Auth::user()
它全部显示为空。Auth::user()显示为空。
为什么web.php路由不传递Auth用户信息?当我试图加载这些页面时,我甚至已经登录,浏览器有一个带有我的auth令牌的cookie,但它一直将我重定向到登录页面,即使cookie带有auth令牌。
我甚至在config/auth.php中将Web驱动程序更新为Passport
'guards' => [
'web' => [
'driver' => 'passport',
'provider' => 'users',
],
'api' => [
'driver' => 'passport', //update this line
'provider' => 'users',
],
],
任何帮助都将不胜感激🙏
1条答案
按热度按时间wpx232ag1#
你可以试试
全局函数。
您的api路由知道谁是用户 (最有可能),因为您在请求标头中提供了令牌。然后Passport根据令牌确定谁是该用户。