相同。相同接口token相同,Token存储在服务器的数据库里面,通常通过登录或者一个接口去获取,登录之后所有的接口都必须要传Token才可以请求成功,Token失效就是最好的阐释。
生成规则一般是自定义的。其实怎么做都是可以的。为了安全可以考虑加密。
举个简单的例子。你可以用appid,appsecred分别用MD5加密,生成2个字符串,然后分别取2个字符串的后6位字符串,链接在一起组成一个12位的字符串。这个字符串就可以作为Token存储到数据库。
当用户请求的时候,会传入appid,appsecred2个参数,以同样的方式加密组合,然后同数据库中的字符串对比,一样就通过。
加密的方法有很多,比如转大写,转小写,追加特殊字符,然后加密。除非别人知道你的加密规则,不然破解不了,因为,你的token不是完整密文,他破解不了。
access token 存在哪里主要看你的业务需求。大多数oauth授权服务器都支持缓存token。也就是说即使你不保存它,重复请求授权的时候,oauth授权服务器会将缓存中的token返回给你。
如果这种方法行不通的时候,可以考虑放到数据库中,
token和用户id一一对应的,所以可以在user表中增加token的字段进行保存。
当然也可以新建一个 userid -token的对应表。
access_token 的使用规则
在微信开发中,最常用到的就是 access_token,access_token 的使用规则是:
每次请求的 access_token 可以在接下来的 2 个小时内都有效,直到你又获取了新的 access_token。
每次跟微信服务器交互都需要用到,但它的请求限制是每天 2000 次,这就要求我们不能每次与微信服务器交互都要重新获取。
二、解决思路
解决思路就是将 access_token 存储起来,并标记它的失效时间。
至于如何存储它,就看你自己的喜好了,你可以将它存储到临时文件中,可以它将存储到数据库中,也可以将它存储到运行内存中。
我之前是将它存到数据库中的,但完全没有必要,其实将它存到运存中就可以。原因是:你后台是一直运行的,那么这个 access_token 的变量就会一直存在,直到下次你重启你的后台。
所以思路是这样的:
新建一个对象变量,记录 access_token 的内容和超时时间
// 临时 access token
let access_token = {
expires: new Date()getTime(),
access_token: ''
}
1
2
3
4
5
1
2
3
4
5
新建一个方法,用于获取 access_token
1 先判断超时时间是否已到。
2 如果已经到了超时时间,就重新获取 access_token 并更新 expires 过期时间。
3 如果未到,说明已经存在 access_token 直接取值用就可以了。
三、例子 nodejs
我有一个后台是 nodejs 写的,它的获取 access_token 的过程是这样的
// 临时 access token
let access_token = {
expires: new Date()getTime(),
access_token: ''
}
// 获取 ACCESS TOKEN
function getAccessToken(){
return new Promise((resolve, reject) => {
if (access_tokenexpires < new Date()getTime()){ // 已超时
axios({
method: 'get',
url: '>
以上就是关于相同接口token相同吗全部的内容,包括:相同接口token相同吗、后台用什么算法去根据appid 和 appsecret生成唯一的accessToken、如何使用access token 防止二次登录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)