Laravel sanctum 检查用户是否已通过身份验证

使用 Laravel sanctum 时如何检查用户是否经过身份验证?

例子 :

控制器 :

public function testAuth(Request $request)
{ 
     if ($request->user()) {
            return "auth";
      } else {
            return "guest";
      }
}

api.php

Route::get('testauth', [MyTestController::class, 'testAuth']);

即使我在标头中传递 token,这条路线也总是返回 guest

当我添加 sanctum 中间件时,路由返回 auth

api.php

Route::get('testauth', [MyTestController::class, 'testAuth'])->middleware('auth:sanctum');

但我不希望这样,我想检查用户是否在控制器中通过了身份验证而不使用中间件

stack overflow Laravel sanctum check if user is authenticated
原文答案

答案:

作者头像

试试下面的代码会帮助你.....你可以使用 user('sanctum') 而不是 user()

public function testAuth(Request $request)
{ 
     if ($request->user('sanctum')) {
            return "auth";
      } else {
            return "guest";
      }
}
作者头像
return auth('sanctum')->check() ? "Auth" : "Guest";
作者头像

首先将 auth 中间件与 sanctum 保护像这样附加到路由

Route::get('/somepage', 'SomeController@MyMethod')->middleware('auth:sanctum');

然后在路由关闭/控制器操作中访问它

auth()->user()

照常

authorization http header must hold your bearer token