Laravel 通过生成的令牌进行身份验证,无需护照和 jwt
Posted
技术标签:
【中文标题】Laravel 通过生成的令牌进行身份验证,无需护照和 jwt【英文标题】:Laravel auth by generated token without passport and jwt 【发布时间】:2018-05-28 10:12:09 【问题描述】:我正在尝试通过在 laravel 5.5 中使用 md5 加密方法从登录用户的用户名中检查生成的令牌来执行 api-auth,并且不想将令牌保存到用户表中。当用户注销时,令牌将无效。 URL 将是这样的:
http://myserver.com/products?token=......
我该怎么做?
添加 - 这是第 44 届世界技能大赛的测试项目,以下来自测试项目文档:
-
身份验证
一个。登录(v1/auth/login)
说明:客户端通过用户名和密码获取登录令牌
请求方式:POST
Header:header授权基础
请求的参数:
正文:o 用户名
密码
响应结果:
如果成功,o 标头:响应状态:200
身体:
token`:授权令牌(在注销前有效)。令牌将由系统从登录的用户名使用 md5 加密方法生成
角色(管理员/用户)
如果用户名/密码不正确或为空,o 标头:响应状态:401
o 正文:消息:无效登录
b.注销 (v1/auth/logout?token=AUTHORIZATION_TOKEN)
说明:服务器使用户令牌无效
请求方法:GET
Header:header授权基础
响应结果:
如果成功,o 标头:响应状态:200
身体:
消息:注销成功
如果未经授权的用户访问它,数据:
o 消息:未经授权的用户
o 响应状态:401
-
地点
一个。所有地点 (v1/place?token=AUTHORIZATION_TOKEN)
描述:供客户端列出数据库中的所有位置(包括用户的 基于频率索引的搜索历史)
请求方法:GET
Header:header授权基础
响应结果:
正文:
o 数组中的所有数据;由 id、name、latitude、longitude、x、y、image_path、description 组成。
o 响应状态:200
如果未经授权的用户访问它,数据:
o 消息:未经授权的用户
o 响应状态:401
...
【问题讨论】:
md5 不是一种加密方法,这听起来非常不安全。 这只是第44届世界技能大赛的测试项目......不是真的。 我真的很想在伪代码中知道您要做什么...如果没有保存任何内容,您如何登录...您需要在 DB 中有一个令牌才能将其与用户用于登录的用户进行比较...您能更好地解释一下吗? 感谢lewis4u,用户将通过restful api登录,如果成功客户端将获取在服务器端生成的令牌并将其保存在客户端。用户注销后,令牌将失效。我认为必须在服务器端使用会话对象来存储令牌,或者? 【参考方案1】:您可以创建自己的中间件,并在该中间件中为用户指定角色并使用您自己的令牌创建,或者您可以将 jwt 与它一起使用,jwt 更适合取消保存数据库中的令牌
【讨论】:
【参考方案2】:该项目只是为了竞争-我解决了以下问题:
用户通过向服务器发送用户名和密码登录;
如果成功,服务器将用户名的md5代码保存到会话中,并将代码返回给客户端;
客户端将md5代码作为token保存到本地存储,后续请求会发送给服务器;
服务器验证令牌以决定客户端是否可以访问其资源。
就是这样!只为竞争,不为生产。
【讨论】:
【参考方案3】:您可以创建令牌 api 并为其提供 cron 作业或会话,除此之外,您可以进行重置,而无需像 jwt 那样将其保存到数据库中,但您可以手动处理它并进行操作
【讨论】:
以上是关于Laravel 通过生成的令牌进行身份验证,无需护照和 jwt的主要内容,如果未能解决你的问题,请参考以下文章
通过 laravel API 使用 firebase 令牌身份验证