Laravel 9 API auth可以使用Passport,但当我尝试访问web.php路由函数中的auth::Use



在我的routes/api.php文件中,我有这样的东西:

Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
})->name('api.user');

这是有效的,当我使用以下内部路由/ai.hp:时,我甚至可以访问Auth::user()

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 auth时,如下所示:

Route::middleware('auth')->group(function () {
Route::name('google.index')->get('google', [ExampleTwoController::class, 'index']);
});

我无法访问ExampleTwoController的索引功能中的以下内容:

Auth::user()

它全部显示为null。Auth::user()显示为null。

为什么web.php路由不传递Auth用户信息?当我尝试加载这些页面时,我甚至登录了,浏览器有一个带有我的身份验证令牌的cookie,但即使cookie带有身份验证令牌,它也会不断将我重定向到登录页面。

我甚至在config/auth.php 中将web驱动程序更新为Passport


'guards' => [
'web' => [
'driver' => 'passport',
'provider' => 'users',
],
'api' => [
'driver' => 'passport', //update this line
'provider' => 'users',
],
],

如有任何帮助,将不胜感激

您可以尝试

auth()->user()

全局函数。

use IlluminateSupportFacadesAuth;
Route::middleware('auth')->group(function () {
Route::name('google.index')->get('google',function (Request $request)=> {
dd( auth()->user(),  Auth::user(), $request->user,  $request->token );
});
});

您的api路由知道谁是(很可能),因为您在请求标头中提供令牌。然后Passport根据令牌确定用户。

相关内容

  • 没有找到相关文章

最新更新