配置小程序登录插件
最近更新时间: 2025-10-11 18:10:00
操作场景
该文档指导您通过 TSF 控制台,创建和绑定微信小程序登录插件。
微信小程序开发者在开发小程序的过程中,需要考虑用户登录认证相关的业务逻辑,基于此插件,开发者可以方便地实现业务的登录认证服务。
典型的微信小程序登录插件使用场景是:
- 实现微信小程序用户登录:遵守微信小程序官方登录规范,在微服务网关侧完成登录业务,生成用户登录态凭证,并返回给小程序前端处理,同时,将微信登录成功返回的原生登录态数据传递至业务后台处理。
- 实现用户登录态凭证校验:微服务网关对用户登录态凭证进行校验,若校验通过,则网关将请求放行,并携带微信原生登录态数据传递至业务后台,否则,返回失败原因至小程序前台,小程序客户端可以根据异常状态码,进行对应的操作(如因登录态过期失效进行重新登录操作)。
操作步骤
创建微信小程序登录插件
- 登录 【TSF 控制台】,在左侧导航栏单击组件中心下的【微服务网关】>【插件管理】。
- 在插件管理页面,单击【新建插件】,填写基本信息。
- 插件类型:选择 WeChatMpLogin。
- 插件名称:必填。
- 插件描述:选填。
- 填写参数设置。
- APPID:小程序唯一凭证密钥,获取方式同 appid。
- APPSECRET:小程序唯一凭证密钥,获取方式同 appid。
- 获取登录凭证 Code。 请求 Code 携带位置:微信后台通过 Code 换取用户的登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)。
- 向小程序返回登录态。
- 自定义登录态参数名:插件对微信登录态以及其他登录信息进行加密的参数名。 返回自定义登录态参数位置:插件对登录态进行加密后的参数携带位置。
- 登录态过期时间:登录态过期时间,以分为单位。
- 选择登录态校验。
- 前台业务请求自定义登录态参数位置:小程序请求业务服务时,登录态携带位置。
- 向业务后台传输登录态参数位置:网关对登录态进行解密后,将提取的微信登录信息传递至用户后台服务的携带位置。
- 单击【完成】,完成创建。
将请求参数转 Tag
TSF 提供了一系列将请求参数转 Tag 能力,方便进行细粒度的服务治理能力。
默认 Tag 操作说明
- 平台提供了一系列微信默认参数的灰度发布能力,包含用户名、性别等信息。用户可以勾选这些参数并提供参数的填写位置,方便平台将这些请求参数转为 TSF 中的标签。
- 当某个参数的传入具有请求的唯一性(该参数值不重复),则可以将改参数设置为 TraceID,平台将对该参数与平台生成的 TraceID 进行关联,方便用户进行唯一性定位与检索。
- 仅支持一个参数设置为
TraceID/。
自定义 Tag 操作说明
自定义 Tag 使用请参考 [微服务网关 Tag 插件] 。
绑定插件
创建好 WeChatMpLogin 类型的插件需要绑定到分组或 API 上才会生效。
- 登录 【TSF 控制台】,在左侧导航栏单击组件中心下的【微服务网关】>【插件管理】。
- 选择刚刚创建好的插件,单击操作列的【绑定对象】。
- 在绑定对象中,将插件绑定到某个分组或者某个分组下的 API 上。
- 单击【提交】。当用户访问对应的微服务网关分组时,插件就会生效。
案例说明
- 获取 APPID 与 APPSECRET。
- 根据上述 操作步骤 ,完成微服务网关中微信小程序登录插件的创建与绑定。
- 编写小程序登录业务。
// 登录
wx.login({
success: res => {
// console.log("code is : ", res.code);
wx.request({
url: ${LOGIN_BUSINESS_URL}, //登录业务访问路径
header: {
'content-type': 'application/json',
'js_code': res.code, //携带js_code
},
success: res => {
//本地缓存
wx.setStorageSync('user_session', res.header.user_session);
//let user_session = wx.getStorageSync('user_session') || ''
//console.log('idsession is :', idsession);
wx.showToast({
title: '登录成功'
})
}
}
)
}
})
- 通过小程序访问业务服务。
BusinessRequestFunc: function () {
//获取登录时存储的user_session
let user_session = wx.getStorageSync('user_session') || '';
//console.log("user_session is :" , user_session);
wx.request({
url: ${BUSINESS_URL}, //业务访问路径,
header: {
'content-type': 'application/json',
'user_session': user_session
},
success: res => {
//console.log("response : ", res.data)
// your business here
}
}
)
//具体接口使用文档参照微信小程序官方使用接口文档
}