微信小程序之token机制及TP5文件缓存Cache

微信小程序token机制

我们平时在web端的开发的时候经常是用的SESSION和COOKIE机制,然后挪到移动端的时候,大家会发现SESSION和COOKIE用不成了,每次请求接口没有通过浏览器,SESSION都变了,不一致。

 

所以我们开发小程序后台的时候就需要采用这样一个token机制,用来表示用户的身份,有一些类似于sessionid,用户通过登录后,生成一个token表明这个身份,每次请求接口的时候带上token来保持用户身份的一致性。还有就是token也要保证用户的唯一性,不能说小明和小红的token因为某种巧合一致了,这样就出现了逻辑上的bug。

 

那么现在引申出两个问题

1.我们采用什么样的策略让他达到唯一?

2.我们使用token的时候把它存在什么地方?

 

接下来演示一下token的创建过程,其中就有我们采用的策略。

这是我们写的一个用户登录时,后台生成token并返回的一个方法,因为这个token机制是要适用于微信小程序的登录功能的,所以我们要结合微信小程序的登录步骤。

所以我们规定在方法中需要传入一个微信小程序登录那一块生成的一个code码,然后微信小程序是提供了一个接口通过这个码去获取微信内部用户唯一标示openid

API地址:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html

可以看到这里我们又调用了一个usertoken的类

在类里面我们有一个构造方法,然后我们将我们微信那边获取的code码传入,通过config助手函数获取到我们的APPID和secret,然后通过sprintf函数拼凑出最终我们想要的接口url。

在上一步的函数里面我们使用了这个类下面的一个get方法:

我们是首先先去获取到那个微信接口返回的结果然后把结果给到红框中的方法

这个方法首先会将openid存进数据库然后取到这条用户的主键id,然后我们够着一个唯一的token

 

好的,到这里,我们的第一个问题就来了:

我们采用的策略是 32位随机数+时间错+salt 最后进行一个md5

生成了token令牌之后,我们的第二个问题就来了,我们的token是存在什么地方的。

 

我是存在缓存中,当然我们可以存在redis这样的缓存中,不过我们这里图了个方便直接使用TP5提供的文件缓存十分的好用。

 

TP5文件缓存Cache

我们设置一个key值和一个value值存进缓存,在缓存存活时间内我们使用key就可以获取到value,然后以上就是缓存的一个建立的过程。

 

现在我们有了token和用户的id,那么我们就将token设为Cache的key,用户的id设为value,然后每次前端请求接口的时候只要给我们token,我们就可以获取到用户的id并且拿到他的信息。

 

通过token获取用户id:

ok,简单token机制到这里结束。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_我走路带风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值