Laravel 4 使用令牌进行身份验证

Posted

技术标签:

【中文标题】Laravel 4 使用令牌进行身份验证【英文标题】:Laravel 4 Auth With Token 【发布时间】:2014-09-26 20:24:42 【问题描述】:

我问了一个使用 Laravel 4 构建项目的正确方法的问题。我目前正在制作一个 API(以支持移动应用程序)和一个 Web 应用程序作为后端。

1) 对此的最佳做法是什么?两次安装(网络应用程序将通过 api 获取数据(我做了什么)?使用一个带有命名空间的 Laravel 安装?一个带有文件夹的 Laravel 安装?

2) 我为 Laravel 制作了一个自定义的身份验证驱动程序并让它工作。在登录返回中,我返回一个 API 令牌,后续调用需要该令牌。我知道在 Laravel 中,只保存了用户的 ID,当 Auth::check() 通过时,如何使 api 令牌保存得很好?其中一些东西让我怀疑在这种与 db 设置分离的情况下使用 Laravel 是否不好,因为它使 Eloquent 不是一个选项。

【问题讨论】:

【参考方案1】:

我有 2 个单独的安装 - 一个用于 API,一个用于 Web(使用此 API)。 不要为另一个安装的 +-50MB 额外费用而烦恼 - 将它们分开!

授权 在每个请求中,我都在客户端设置了“Access-Token”标头。然后在 API 端使用Header::get('Access-Token') 读取此令牌。然后我只为这个唯一的请求存储经过身份验证的用户 - API 应该是无状态的(会话中没有用户数据,每个请求都需要身份验证)。

除其他外,我还检查 AcceptContent-Type 标头 - 我的 API 仅接受 application/jsonapplication/json 格式的运动响应。

【讨论】:

您能解释一下“将它们分开”是什么意思吗? 另外,您如何在网络应用程序上记住用户的身份验证令牌?我看到它没有存储在 Auth::user() 对象中.. 分开 - 两个安装,而不是一个用于 API/APP 的 vendor 文件夹。在网络应用程序上,我将访问令牌保存为 cookie/会话参数 - 在客户端,而不是服务器端 所以你说我同意将它们分开,但是你为什么说不用担心另一个安装的额外费用呢?你的意思是不用担心吗? 我提到“不要为需要额外的磁盘空间而烦恼”

以上是关于Laravel 4 使用令牌进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 Passport 和 Laravel 进行身份验证时返回访问令牌和用户

通过 laravel API 使用 firebase 令牌身份验证

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

使用 JWT 进行 laravel 身份验证的 Satellizer 警告“期待一个名为 token 的令牌”

如何在 laravel 中进行前端 api 身份验证

Laravel Passport API:检索经过身份验证的令牌