token_for_signin.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import jwt
  2. from datetime import datetime, timedelta
  3. def generate_jwt_token(
  4. email: str,
  5. name: str,
  6. secret_key: str = "WEBUI_SECRET_KEY", # 建议通过环境变量注入实际密钥
  7. expires: int = 3600 # 默认有效期 1 小时(秒)
  8. ) -> str:
  9. """
  10. 生成包含用户信息的 JWT Token
  11. :param email: 用户邮箱(必需)
  12. :param name: 用户名(必需)
  13. :param secret_key: 加密密钥(默认示例值)
  14. :param expires: Token 有效期(秒)
  15. :return: JWT Token 字符串
  16. """
  17. payload = {
  18. "email": email,
  19. "name": name,
  20. # 可添加其他字段
  21. "exp": datetime.utcnow() + timedelta(seconds=expires)
  22. }
  23. return jwt.encode(
  24. payload,
  25. secret_key,
  26. algorithm="HS256"
  27. )
  28. # 示例用法
  29. if __name__ == "__main__":
  30. # 生成有效 Token
  31. valid_token = generate_jwt_token(
  32. email="ygtx@ygtx.cn",
  33. name="ygtx",
  34. expires=3600
  35. )
  36. print("Valid Token:", valid_token)
  37. # 生成已过期 Token(用于测试过期场景)
  38. expired_token = generate_jwt_token(
  39. email="expired@example.com",
  40. name="Expired User",
  41. expires=-10 # 负值强制过期
  42. )
  43. print("Expired Token:", expired_token)