token的作用
在微信小程序中,如何具体地实现登录和获取用户令牌的功能呢,诚然,我们可以设置一套账号密码的体系来实现上述的流程,但是小程序是构建于微信体系下的,微信已经实现了一套身份验证体系,我们没有必要去在小程序中再实现一次账号密码的体系,而是可以利用微信的体系来制作我们的权限体系。也即是我们不需要传递账号和密码,取而代之的是小程序为每一个用户生成一个Code数字码。我们只需要把这个Code码传递给我们的getToken接口,这个Code码是我们在微信服务器换取用户信息的标识,我们在getToken接口中接收到这个Code码之后,我们就需要向微信服务器发送一个请求并将Code码发送到微信服务器中,然后微信服务器就会返回一个openid和一个session_key,这个openid就是我们需要的用户身份的唯一标识,而且如果我们需要使用微信支付时,这个openid也是必需的。(PS:session_key是一个密钥,当我们需要解密小程序从服务器中获取到的加密信息时,是需要使用到这个sesion_key,来破解其中的信息,因为这个信息中包含着一个unionid变量,unionid也是用户身份的一种标识,这个unionid的作用是在同一用户注册开发的小程序,公众号,服务号下,一个微信用户的unionid都是相同的从而方便我们实现小程序之间的关联。)当我们获取了openid后,我们需要将其存到我们的的数据库中。而openid是一个比较隐秘的用户数据而且是固定不变且长久有效的,我们并不提倡将其返回到客户端去,解决这个问题的方法是生成一个具有有效期限的Token令牌返回到客户端中,下次访问时只需携带这个令牌并通过这个令牌找到对应的openid从而间接地获取openid,而Token令牌的存储,我们将其存放在缓存中,如果我们将其存放在数据库中,我们访问接口时,会对数据库产生一个相当大的压力,且大多数情况下,缓存的访问速度是要优于数据库的访问速度的。
(摘自知乎:)
请发表评论