Laravel 5.2 TokenGuard实现

时间:2015-12-24 10:05:31

标签: laravel laravel-5 laravel-5.2

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

  

call_user_func_array()期望参数1是有效的回调,   class' Illuminate \ Auth \ TokenGuard'没有方法'尝试'

1 个答案:

答案 0 :(得分:4)

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

  1. bearerToken,授权HTTP标头值以:bearer。
  2. 开头
  3. 密码,通过HTTP标头传递:PHP_AUTH_PW。
  4. 在模型中匹配的键由受保护的属性storageKey指定。

    因此,令牌保护用于实现第三方API访问令牌,而不是存储在会话中的临时访问令牌。