1. 微信小程序登录模块设计解析
微信生态下的用户认证体系与传统Web开发有着本质区别。小程序登录流程的核心在于利用微信提供的开放能力,在保证用户隐私安全的前提下实现便捷的身份验证。我经手过十几个小程序项目,发现90%的开发者都会在登录流程设计上踩坑。
小程序登录涉及三个关键凭证:
- code:临时登录凭证(5分钟有效期)
- session_key:微信服务器会话密钥
- openid/unionid:用户唯一标识
典型登录流程是这样的:
- 前端调用wx.login()获取code
- 将code发送到开发者服务器
- 服务器用code+appid+secret向微信接口服务交换session_key和openid
- 服务器生成自定义登录态(通常用token)返回给前端
- 前端存储登录态用于后续接口鉴权
关键提示:session_key绝不能传到客户端!我曾见过有团队把session_key存在storage里,导致用户敏感数据泄露风险。
1.1 登录态维护方案对比
| 方案类型 | 实现方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 纯前端存储 | 只使用wx.checkSession | 实现简单 | 安全性低 | 内部工具类小程序 |
| 服务端会话 | 使用Redis存储会话 | 可控性强 | 服务器压力大 | 中大型商业项目 |
| JWT方案 | 签发时效token | 无状态服务 | 无法主动失效 | 分布式系统 |
我推荐中小项目采用改良版JWT方案:
- 设置较短过期时间(如2小时)
- 使用refresh token机制
- 关键操作需二次验证
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 用户信息获取全攻略
2.1 基础信息获取
微信调整用户信息获取策略后,现有两种合法获取方式:
方案一:按钮点击授权
html复制<button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">
授权用户信息
</button>
javascript复制onGetUserInfo(e) {
if (e.detail.userInfo) {
