第三方系统使用用户名密码绑定微信号,怎么验证登录状态安全?
发布于 6 年前 作者 tangjie 11481 次浏览 来自 官方Issues

大神们问个问题哈,刚开始学微信小程序开发

小程序登录与自己的服务器交换数据的过程看明白了,对于保持登录状态及登录状态验证有不明白的。

1 保持登录状态 查了些帖子许多说请求需要带个header,把一些信息带上,有哪些建议

2 验证登录有以下问题

2.1 既然openid不安全不能放在小程序里缓存,也不能放在请求里面,使用第三方的sessionkey,这样可以保证安全,而且会有过期时间。 这一点能理解

但是,有以下不太明白,

第一 现在很多小程序都只是让咱授权一下,之后好像就没有在授权了,咱们哪天想用就可以打开这个小程序,直接就能用,好像没有过期再重新授权的操作。

第二 比如有的小程序有个绑定界面,输入用户名密码的后就可以绑定自己的微信号了,下次再登录的时候,也不需要验证用户名和密码了。

以上两种情况,如果使用第三方的session还是会过期,如果自己的服务器端给每个人分配一个随机字符串,然后小程序再用这个随机字符串去请求,很长时间后,再请求还是从缓存中用这个随机数请求,如果用户表里能匹配上这个随机数就认可能登录,这样效果是不是又和openid一样了,没有过期?

对于用户名密码绑定微信号你们都是怎么解决的?

2 回复

openid在同一个小程序或者同一个公众号里不变,但公众号,小程序,网页不可通用,所以api中有获取unionid的方案,需要绑定一个开放平台,同一个用户在开放平台的所有应用下unionid是相同的,这样就能保证同一个微信号登录小程序,网页,公众号保持统一.你说的密码问题理论上小程序和公众号是不需要的,只有web上或者其他应用允许帐号登录的时候才需要,这时候需要扫码绑定一下unionid就可以直接关联

还有就是code是会变化的,那换取的openid是固定的,sessionkey也就是密钥是变化的吗?

1 那对于这种绑定用户名密码的 用户表保存openid, 可不可以再小程序启动时把用户名密码从缓存取出 然后和code一起传到后台,重新验证openid是否一致

2 这种关联用户名密码的 用户表需要保存哪些信息, 比如 openid sessionkey 都需要保存再数据库里面吗

回到顶部