微信分享签名后台缓存token,使用文件方式

完成签名后台之后,其实目前每天2000已经够用了,但还是完善一下。

设计思想就是加一个判断,因为从公众号中获取的token的保鲜期就两个小时,也就是7200s,如果还新鲜,就在文件中取,如果不新鲜,就重新请求微信获取token,然后把新的token存到文件中,并更新获取token的时间。

其实就是把token和时间存一下,使用文件、数据库都可以实现,我用的是文件。

先说文件,我是使用.properties文件,然后里面有两个键值,一个token用来存放token的值,一个是time用来存放取token的时间,我存放的是通过System.currentTimeMillis();获取的毫秒数。
文件token.properties

token=1111
time=22222

工具类readAndwirte,java

import java.util.Properties;
import java.util.Enumeration;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class readAndwrite {
	 //读取信息
	public static String readBykey(String filePath, String key) {
        Properties p = new Properties();
        try {
            InputStream in = new BufferedInputStream (new FileInputStream(filePath));  
            p.load(in);
            String value = p.getProperty(key);
            return value;
        }catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
    //写入信息
    public static void WriteBykey (String filePath, String Key, String Value) throws IOException {
        Properties p = new Properties();
        InputStream in = new FileInputStream(filePath);
        //从输入流中读取属性列表(键和元素对) 
        p.load(in);
        //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。  
        //强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
        OutputStream out = new FileOutputStream(filePath);
        p.setProperty(Key, Value);
        //以适合使用 load 方法加载到 Properties 表中的格式,  
        //将此 Properties 表中的属性列表(键和元素对)写入输出流  
        p.store(out, "Update " + Key + " name");
    }
}

因为每个人的业务不同,所以只给出使用的例子example.java思路就是当前毫秒和获取token时候的毫秒/1000相减看是否大于7200。

public String example {
		//地址是绝对地址
		long getoldtime = Long.parseLong(readAndwrite.GetValueByKey("C:/token/token.properties","time"));
		long currentTimeMillis = System.currentTimeMillis();
		if((currentTimeMillis-getoldtime)/1000>7200){
			accessToken = getAccessToken();//你定义的请求微信服务器获取token的方法
			try {
				readAndwrite.WriteProperties("C:/token/token.properties","token", accessToken);
				readAndwrite.WriteProperties("C:/token/token.properties","time", String.valueOf(currentTimeMillis));
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}else{
			accessToken=readAndwrite.GetValueByKey("C:/token/token.properties","token");
		}
		return token;
	}

需要注意的是,在写入和读出的时候传的地址是绝对地址,所以你本地和部署到服务器上的地址是不同的,这要注意一下,要不然404。
最后感谢:读取写入的例子。
https://blog.csdn.net/qy20115549/article/details/73368611

<think>好的,我现在需要回答用户关于微信小程序后台开发技术栈和服务器架构的问题。首先,用户可能对小程序开发的后台部分不太熟悉,所以要从基础开始讲起。微信小程序本身是前端,但后台需要处理数据存储、用户认证、接口服务等,所以需要选择合适的后端技术。 微信小程序的后台可以用多种语言开发,比如Node.js、Python、Java、PHP等。我需要列举常用的技术栈,比如Node.js的Express或Koa框架,Python的Django或Flask,Java的Spring Boot,PHP的ThinkPHP。数据库方面,常用MySQL、MongoDB、Redis等。云服务方面,可以用腾讯云、阿里云或者微信自家的云开发。 服务器架构部分,用户可能想知道如何设计一个可扩展的后端架构。可能需要分层次,比如接入层、业务逻辑层、数据存储层。接入层用Nginx做负载均衡,业务逻辑用微服务架构,数据存储用主从复制、分库分表,缓存用Redis,消息队列用Kafka或RabbitMQ。安全方面,HTTPS、JWT鉴权、防止SQL注入等。 还需要考虑云原生技术,比如Docker容器化,Kubernetes编排,以及Serverless应用。可能用户对云开发感兴趣,可以提到微信云开发的优势,比如免运维,集成度高。 然后生成相关问题,比如如何选择技术栈,如何设计高并发架构,云开发的优缺点,如何保证安全性,如何实现实时通信等。确保问题覆盖用户可能关心的其他方面。 最后检查是否符合格式要求:行内公式用$符号,独立公式单独段落,中文回答,正确引用。确保没有使用Markdown,语言自然口语化,分步骤说明。</think>微信小程序后台开发技术栈与服务器架构主要包含以下核心内容,分为技术选型、架构设计、云服务整合三个部分: ### 一、技术栈组成 1. **后端语言** - 常用$Node.js$(Express/Koa/NestJS)$^{[1]}$、$Python$(Django/Flask/FastAPI)$^{[2]}$、$Java$(Spring Boot)$^{[3]}$、$PHP$(ThinkPHP/Laravel)$^{[4]}$ - 微信原生方案支持云开发(CloudBase)使用$Node.js$ 2. **数据库** - 关系型:$MySQL$、$PostgreSQL$(支持事务处理) - 非关系型:$MongoDB$(文档存储)、$Redis$(缓存与Session管理) 3. **通信协议** - 接口规范:$RESTful\ API$或$GraphQL$ - 实时通信:$WebSocket$(如在线客服场景) ### 二、服务器架构设计 ``` ┌──────────────┐ │ 客户端请求 │ └──────┬───────┘ ▼ ┌───────────────────────┐ │ 负载均衡层 │ │(Nginx/HAProxy) │ └───────┬───────┬───────┘ ▼ ▼ ┌──────────┐ ┌──────────┐ │ 业务服务器 │ │ 业务服务器 │ │(微服务架构)│ │(集群部署) │ └─────┬─────┘ └─────┬─────┘ │ │ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ 数据存储层 │ │ 缓存/队列系统 │ │(MySQL分库分表) │ │(Redis/RabbitMQ)│ └─────────────────┘ └─────────────────┘ ``` ### 三、云服务集成 1. **微信生态能力** - 通过$WXSSO$实现微信登录 - 微信支付接口集成$HMAC-SHA256$签名验证$^{[5]}$ - 内容安全API(图片/文本检测) 2. **腾讯云组件** - 对象存储$COS$(用户上传文件) - 云函数$SCF$(事件驱动型业务) - 容器服务$TKE$(微服务部署) ### 四、安全规范 1. HTTPS强制加密(TLS1.3+) 2. 接口鉴权使用$JWT$(JSON Web Token) 3. SQL注入防护采用预编译语句: $$ P(prepared\ statements) = 1 - \prod_{i=1}^{n}(1 - p_i) $$ 其中$p_i$表示单层防护有效性概率$^{[6]}$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值