Laravel:如何在没有中间件的情况下检查 API 路由的用户身份验证('auth:api')

joe*_*pat 2 laravel laravel-passport laravel-api laravel-7

我如何检查当前用户从控制器访问方法是否经过身份验证,相关 API 路由不受任何身份验证中间保护,因为该路由可供公众和访客用户访问,我检查了我的请求标头不记名令牌正在通过,我正在为我的路线使用反应路由器。api驱动程序是passport

公共路线

Route::get('product/list', 'ProductController@index')

尝试过什么

  1. 将默认的 AUTH Guard 更改为api

  2. Auth()->guard('api')->check()尝试在控制器方法中显式调用。

    if (Auth()->guard('api')->check()) {
          return 'is_favourite';
    } else {
          return 'unauthenticated';
    }
Run Code Online (Sandbox Code Playgroud)
  1. 也这样称呼它Auth()->check()
    if (Auth()->check()) {
          return 'is_favourite';
    } else {
          return 'unauthenticated';
    }
Run Code Online (Sandbox Code Playgroud)

结果

总是'unauthenticated'

预期结果:is_favourite在标头中传递承载令牌时的结果,如果未提供承载令牌,则为“未经身份验证”。

joe*_*pat 7

我终于让它工作了,尝试了一下,它成功了:

if (auth('api')->check()) {
      return 'is_favourite';
    } else {
      return 'unauthenticated';
    }
Run Code Online (Sandbox Code Playgroud)