在我的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根据令牌确定用户。