【问题标题】:Laravel: How to check user auth for API routes without middleware('auth:api')Laravel:如何在没有中间件的情况下检查用户身份验证 API 路由('auth:api')
【发布时间】:2021-02-03 09:39:54
【问题描述】:

如何检查从控制器访问方法的当前用户是否经过身份验证, 有问题的 API 路由不受任何身份验证中间体的保护,因为公共和两个来宾用户都可以访问该路由,我检查了我的请求标头,Bearer 令牌正在传递,我正在为我的路由使用反应路由器。 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';
    }
  1. 也这样称呼它Auth()->check()
    if (Auth()->check()) {
          return 'is_favourite';
    } else {
          return 'unauthenticated';
    }

结果

总是'unauthenticated'

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

【问题讨论】:

  • Auth::guard('api')->check() ?
  • 您确定您在测试请求中传递的 Bearer 令牌是正确的吗?
  • @gbalduzzi 是的,它被用于其他直接设置了middleware('auth:api') 的路由

标签: laravel laravel-7 laravel-passport laravel-api


【解决方案1】:

我终于让它工作了,尝试了这个,它成功了:

if (auth('api')->check()) {
      return 'is_favourite';
    } else {
      return 'unauthenticated';
    }

【讨论】:

  • 它在 laravel 8 中工作,我现在可以使用和不使用身份验证令牌调用相同的 api(外部身份验证中间件),每个都有不同的响应:)
猜你喜欢
  • 2021-01-21
  • 2019-09-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2021-10-20
  • 2017-12-05
相关资源
最近更新 更多