3

如何使用令牌保护来创建 API?我试过它来实现它,但我收到了错误

call_user_func_array() 期望参数 1 是一个有效的回调,类 'Illuminate\Auth\TokenGuard' 没有方法 'attempt'

4

1 回答 1

4

深入研究 laravel 的源码后,发现令牌守卫暂时没用。所有 auth 都传递给 auth 中间件,从那里,您可以看到它调用Auth::guard($name)->guest()来检查用户是否登录。这\Auth::guard将获得您在路由中指定的正确保护。假设这里是 TokenGuard。在 \Illuminate\Auth\TokenGuard 中,检查user函数以查看如何TokenGuard获取用户。首先,它将获取名为 的输入参数api_token。然后它将让可能雄辩的提供者作为默认配置在数据库中搜索一个值。如果找到任何值,则会创建一个新的用户实例。如果没有名为 的输入值api_token,则将尝试其他一些选择:

  1. bearerToken,其 Authorization HTTP 标头值以:bearer 开头。
  2. 密码,通过 HTTP 头传递:PHP_AUTH_PW。

在模型中匹配哪个键由受保护的属性指定storageKey

所以令牌守卫是用来实现第三方API访问令牌的,而不是存储在会话中的临时访问令牌。

于 2015-12-30T07:24:10.153 回答