| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import base64
- import secrets
- import jwt
- from datetime import datetime, timedelta
- def generate_jwt_token(
- email: str,
- name: str,
- secret_key: str = "QCopWfW1tmdxRulrO3axMBx78ygNkOI-fOv7J-4iJaU", # 建议通过环境变量注入实际密钥
- expires: int = 3600 # 默认有效期 1 小时(秒)
- ) -> str:
- """
- 生成包含用户信息的 JWT Token
-
- :param email: 用户邮箱(必需)
- :param name: 用户名(必需)
- :param secret_key: 加密密钥(默认示例值)
- :param expires: Token 有效期(秒)
- :return: JWT Token 字符串
- """
- payload = {
- "email": email,
- "name": name,
- # 可添加其他字段
- "exp": datetime.utcnow() + timedelta(seconds=expires)
- }
- return jwt.encode(
- payload,
- secret_key,
- algorithm="HS256"
- )
- # 示例用法
- if __name__ == "__main__":
- # 生成有效 Token
- valid_token = generate_jwt_token(
- email="ygtx@ygtx.cn",
- name="ygtx",
- expires=3600
- )
- print("Valid Token:", valid_token)
- # 生成已过期 Token(用于测试过期场景)
- expired_token = generate_jwt_token(
- email="liuq@yg.com",
- name="liuq",
- expires=3600 # 负值强制过期
- )
- print("Expired Token:", expired_token)
- # 生成32字节(256位)随机数据
- key_bytes = secrets.token_bytes(32)
- # 转换为Base64字符串(无填充,URL安全)
- key_base64 = base64.urlsafe_b64encode(key_bytes).decode().strip("=")
- print("密钥:", key_base64)
|