请问 token 的验证原理是什么呢?

因为有个项目是基于tp3.2,需要这方面的功能
我现在的做法是用hash_hmac()方法加密,生成token响应到客户端,客户端请求时带的token,我先用header payload secret 加密,hash_equal()成功后,获取payload里的数据,但是我使用hash_hmac()对同一个值生成的token每次都是相同的,用jwt生成的token每次都是有变化的,是哪里的问题呢?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
liyu001989
最佳答案

https://learnku.com/courses/laravel-advanc...

补充了一下token 验证的逻辑,每次不同是因为过期时间等时间戳不同,同时签名也会不同

6年前 评论
讨论数量: 5
liyu001989

https://learnku.com/courses/laravel-advanc...

补充了一下token 验证的逻辑,每次不同是因为过期时间等时间戳不同,同时签名也会不同

6年前 评论

@liyu001989
headerpayload都相同的情况下,每次生成的签名(也就是token的第三部分)为什么也是不同的?我看jwt代码里签名用的加密方法就是hash_hmac,这个加密方法生成的签名不应该是每次都不一样的啊.

6年前 评论

@liyu001989
我看扩展包的代码,签名的加密方式是hash_hmac(),但是最终生成的签名是43位的(总是43位),但是我用hash_hmac()加密后的签名是64位的,是不是我哪里搞错了

6年前 评论

@liyu001989
签名是43位的知道了,因为源代码中将hash_hmac()输出的二进制流用base64加密所以是43位

6年前 评论

@liyu001989 如何没有使用 Dingo API 的话,需要自己验证请求带的 token 吗?

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!