微信token server服务

本文介绍了将微信鉴权功能作为一个独立的server,通过gRPC进行通信。采用Golang实现,详细讨论了如何重写AccessTokenServer,并利用Redis作为缓存和锁媒介。当Token过期时,通过事件队列缓存请求,确保并发安全性。同时提到了一种更复杂的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方案:

微信鉴权等作为单独的server,对外提供服务. 用grpc通信

golang库: https://github.com/chanxuehong/wechat.v2/blob/master/mp/core/access_token_server.go   重写AccessTokenServer


方案:https://cnodejs.org/topic/57b330b6670139eb7bf6fd4c

1.redis有2个功能:第一是用作token的缓存,第二是作为锁媒介2.利用事件队列缓存请求过程:1.redis作为缓存,缓存住token2.每次请求判断token是否过期2.1 如果token未过期,则直接使用2.2 如果token过期,则利用redis的setnx(只能设置不存在的key)命令获取锁(redis单线程,一次处理1个命令,如果一下子来了N多请求,也只能一条一条处理),设置成功的请求去做获取token的操作,其他的请求缓存到事件队列设一个timeout后去redis取, 如果还是没取到, 重复)

############################################


1.以下办法有点复杂:

https://github.com/diamont1001/wechat-jssdk-server/blob/master/docs/%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3/token%E5%92%8Cticket%E6%9B%B4%E6%96%B0%E9%80%BB%E8%BE%91.md



2.  redis锁
http://xiaorui.cc/2016/03/23/golang%E4%BD%BF%E7%94%A8redigo%E5%AE%9E%E7%8E%B0redis%E7%9A%84%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值