微信小程序token解决方案

在微信小程序的登陆流程中,有一个自定义登陆态,开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

这里我们采取token的方式来实现登陆状态的验证,每个token都有失效时间,有一种做法是把token存入缓存中,我们来讲一种服务器无需存储token的方法(当然这样会每次都要解密token)。我们使用python的itsdangerous来实现:

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer

def generate_auth_token(openid, expiration =600):
#生成token 默认600是时效 十分钟
    s = Serializer("nicaimiyaoshishenme", expires_in = expiration)
    return s.dumps({ 'openid': openid })

def verify_auth_token(token):
#解密token
    s = Serializer("nicaimiyaoshishenme")
    try:
        data = s.loads(token)
    except Exception:
        return None # 无效
    return data['openid']

我们用openid来生成token,同时设置过期时间,代码段中nicaimiyaoshishenme是我们自己指定的密钥,如果解密失败或者超出时间抛出异常返回none,当然这里可以对token无效和超时的异常分开处理。

发表评论