PHP写一个api接口,为什么需要生成一个token值呢。

编程入门 行业动态 更新时间:2024-10-21 12:49:39
本文介绍了PHP写一个api接口,为什么需要生成一个token值呢。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

问 题

写一个接口api, 我觉得只要为每一个请求数据的用户生成一个唯一的 name 和key(密钥),然后用一个表user_api 字段有 id name key 把它存入到表user_api中,每次用户请求数据时,只要提交参数name和key,然后服务器端把参数在user_api表中验证一下就行了,有数据就允许用户请求数据,没有就拒绝请求。

问题:1.我在公司【项目1】里,看到之前写的接口除了验证name和key合法外,为什么还要生成一个token值呢,然后把这个token值缓存起来设置有效期时间。这个是不是有点多余了啊。2.代码里面有一个获取token值的方法 getToken();但是我发现公司【项目2】里去调用【项目1】里的数据时,每次调用之前都要先去请求getToken()这个获取token值的接口,获取到token值后,在一并把name、key、token和其它一些参数提交到请求数据的相应的接口。此时,数据接口会验证name key token。token的验证是和缓存的token对比的。

疑惑:如上所述,如果是这样的话,每次请求数据时,都要事先调用获取token值的方法 getToken()【该方法通过生成随机字符串和name、key处理生成】,说明每次请求数据接口时获取到的token值都是不一样的,那之前缓存起来的token还有什么用呢。比如,我要请求一个用户名数据的接口 getUserName();第一次请求 用户名数据的接口 getUserName()时,我生成了一个token值,然后我把浏览器关闭了。再次请求用户名数据的接口 getUserName(),又生成了一个新的token值。那之前设置的什么缓存token并设置有效期还有什么用呢?就算把他设置成2个小时过期,每次请求接口时,token都不一样。缓存还有什么用处呢?

谁给解释解释,一直想不通这个点。

解决方案

我觉得楼上说的不完全对吧 根据题主的意思是1.token值为什么不能直接放数据库表里2.token为什么要缓存起来

我的理解是1.可以放数据库表里,但是频繁读取数据库(api调用的量不会小的)获取这种数据没意义,因为没有持久化的必要2.缓存起来使用方便啊,降低服务器压力啊。你想啊,token是防止非法的请求包的,调用方根据一定的规则获取了token或者生成token以后,在一定时间内被截获token的可能是有的,但是权衡一下利弊,设置一个合理的过期时间是可以接受的,比如微信接口的token有个过期时间,这样就可以在这个时间内不用重复获取了。因为每个请求都要获取token的话服务器压力肯定很大的(少量请求的应用看不出来,但是像微信这个级别的应用,任何一点多余的请求都是成百上千的费用啊)

更多推荐

PHP写一个api接口,为什么需要生成一个token值呢。

本文发布于:2023-10-31 06:08:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545241.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:接口   PHP   api   token

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!