uniapp 微信小程序token解析

文章描述了一个在Vue项目中使用异步方法`asyncloginTap`处理用户登录请求,包括发送POST请求到/userAuth/login/account,解析返回的token并存储刷新令牌和过期时间。同时使用了jsrsasign库对JWT进行解码。

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

async loginTap(){
	let res = await this.$req({
		url:'/userAuth/login/account',
		method:'post',
		data:this.params
	})
	if(res.code==200&&res.data){
		let token_data = this.$decodeToken(res.data.token)
		let token_info = JSON.parse(token_data.User)
		// console.log('获取token里包含的信息token_info',token_info)
		uni.setStorageSync('token_refreshtime',token_data.exp)
		uni.setStorageSync('refreshToken', token_info.refreshToken)
	}else{
		uni.showToast({
			title:res.msg,
			icon:'error'
		})
	}
},

放在公共方法里:

import jsrsasign from 'jsrsasign'
Vue.prototype.$decodeToken = function(token){
	let obj = null
	if (token !== '') {
		const payload = jsrsasign.KJUR.jws.JWS.parse(token)
		if (payload.hasOwnProperty('payloadObj')) {
			obj = payload.payloadObj
		}
	}
	return obj
}
### UniApp 微信小程序后端开发教程 #### 服务器对接 API 的基本架构 对于 UniApp 小程序而言,其后端可以采用多种技术栈实现。通常情况下,选择 Java 或 Python 等语言构建 RESTful API 接口服务是非常常见的做法[^1]。 #### 使用 Flask 构建简单的 Web 登录验证接口 考虑到业务需求较为基础,在某些场景下可以选择 Python 的轻量级 web 框架——Flask 来完成后台的服务搭建工作。下面是一个利用 Flask-WTF 插件创建登录认证接口的例子: ```python from flask import Flask, request, jsonify from flask_wtf.csrf import CSRFProtect import os app = Flask(__name__) csrf = CSRFProtect(app) @app.route('/login', methods=['POST']) def login(): data = request.get_json() username = data.get('username') password = data.get('password') # 假设这里有一个函数用于校验用户名和密码是否匹配数据库中的记录 user = check_user(username, password) if not user: return jsonify({"error": "Invalid credentials"}), 401 token = generate_token(user.id) # 创建 JWT Token 或其他形式令牌给客户端保存以便后续访问受保护资源时携带此凭证 response_data = { 'token': token, 'userId': str(user.id), 'nickname': user.nickname } return jsonify(response_data) if __name__ == '__main__': app.run(debug=True) ``` 这段代码展示了如何通过 POST 请求接收来自前端提交的 JSON 数据,并对其进行处理返回相应的响应结果。需要注意的是实际应用中还需要考虑更多安全性和性能优化方面的要求[^3]。 #### 处理微信支付回调通知 当涉及到在线交易功能时,则不可避免要面对第三方支付平台的通知机制。以微信为例,在成功发起一次支付操作后,商家将会接收到由微信官方发出的状态更新消息。为了确保能够及时有效地获取这些信息并作出相应反应,开发者应在初始化订单时指定 `notify_url` 参数指向自己的服务器地址,从而允许外部系统推送事件提醒至本地环境内运行的应用程序实例之中[^5]。 ```python @app.route("/wxpay/notify", methods=["POST"]) def wx_pay_notify(): xml_str = request.stream.read().decode("utf8") result = parse_xml_to_dict(xml_str) sign_from_weixin = result.pop('sign') # 移除签名字段再计算新的MD5摘要值做对比检验数据完整性 new_sign = create_md5(result.items(), key='your_key_here') if sign_from_weixin != new_sign.upper(): # 注意大小写敏感度差异可能引起误判 logging.error(f'Signature verification failed! Received {sign_from_weixin}, expected {new_sign}') abort(500) trade_status = result['return_code'] out_trade_no = result['out_trade_no'] if trade_status == 'SUCCESS': handle_successful_payment(out_trade_no=out_trade_no) resp_template = '<xml><return_code><![CDATA[{code}]]></return_code></xml>' return resp_template.format(code=trade_status), {'Content-Type': 'application/xml'} ``` 上述片段说明了怎样解析 XML 格式的 HTTP Body 内容提取有用的信息项出来加以分析判断;同时也体现了针对特定条件触发内部事务逻辑执行的具体方式方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值