【问题标题】:Laravel 5.2 TokenGuard implementationLaravel 5.2 TokenGuard 实现
【发布时间】:2015-12-24 10:05:31
【问题描述】:

如何使用令牌守卫创建API?我试过它来实现它,但我得到了错误

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

【问题讨论】:

  • 也许您会很乐意发布您编写的一段代码?
  • 我想实现laravel 5.2中提供的api token Guard。我希望进程通过Api guard实现认证。核心文档不多解释
  • 如我所说,显示你的代码
  • 我在这里找到了非常详细的文档帮助。 gistlog.co/JacobBennett/090369fbab0b31130b51 它告诉你如何使用 Laravel 设置基于令牌的身份验证。也许这可能会有所帮助? edit 此链接为您提供有关如何使用 Laravel 5.2 进行基于令牌的身份验证的信息我想将响应放在这里,但这里的链接非常详细且很长

标签: laravel laravel-5 laravel-5.2


【解决方案1】:

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

  1. bearerToken,即 Authorization HTTP header 值,开头为:bearer。
  2. 密码,通过HTTP头传递:PHP_AUTH_PW。

模型中要匹配的键由受保护的属性storageKey 指定。

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

【讨论】:

  • 您可以在登录时生成令牌并在注销时将其删除,但这意味着您一次只能在一台设备上登录,这就像重新实现会话一样原始方式。通过参数使用会话密钥可能会更好。
  • 好吧,larvael 中的基本认证是基于 session 的,而在 api 中,session 没有实现,所以我们需要令牌来做它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-17
  • 2016-10-31
  • 1970-01-01
  • 2016-06-28
  • 2016-07-04
  • 1970-01-01
  • 2016-09-05
相关资源
最近更新 更多