【墙裂推荐】Token的生成和校验

简介: 【墙裂推荐】Token的生成和校验

什么是 token


token(也称令牌)就是一串字符,其作用是为了减轻频繁进行用户名和密码的验证而对服务器产生的压力。客户端首次访问通过正确的用户名和密码从服务端拿到 token,之后客户端携带 token 即可完成验证,无需重复携带用户名和密码。


JWT


JWT 全名 json web token,它是一种开放的标准,其带有数字签名,用于 json 对象的安全传输。


怎么生成 token


我们已经知道 token 是一串字符,我们可以通过一些秘钥+用户名+时间戳等字符组合,使用 base64 对其进行加密,从而生成 token 颁发给客户端。然后对客户端携带的 token 进行解密,拿到秘钥,用户名,时间戳,最后对这些参数进行校验就可以判断 token 正确与否和是否过期。


以上为 token 生成的原理,在实际开发中,我们可以直接使用现成的第三方库(如:python-jose)。


常用的 JWT 库


  • python-jose
  • pyjwt
  • jwcrypto
  • authlib


安装 JWT 库


pip install python-jose
复制代码


生成 token


# 从jose导入jwt,后面使用jwt生成token
from jose import jwt
# 导入日期模块,用来验证token过期时间
from datetime import datetime,timedelta
# 定义秘钥,很重要,请勿泄露
SECRET_KEY = 'phyger'
# 生成token的代码,token过期时长定义为默认参数,单位为秒
def create_token(seconds=60):
    # 定义token过期时间,为当前utc时间加上token有效期
    expire = datetime.utcnow()+timedelta(seconds=seconds)
    # 此处即为生成token的payload,sub自定义(可选用户名),uid自定义(可选设备id等)
    # to_endoe可以是一个空的字典,但是不建议这样做
    to_encode = {"exp":expire,"sub":SECRET_KEY,"uid":"123456"}
    # 使用jwt生成token,token是根据payload和秘钥共同生成。
    jwt_token = jwt.encode(claims=to_encode,key=SECRET_KEY)
    return jwt_token
复制代码


joseJWT 默认采用 HS256 加密方式。


运行代码


> python utm.py
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTI1MjY0OTgsInN1YiI6InBoeWdlciIsInVpZCI6IjEyMzQ1NiJ9.TnRFBFX_2Jn3VU26n603l5uOQyB9bOOWSxBQUr6tBA4
复制代码


可以看到,token 已经生成。


上面,我们已经介绍了 token 的生成,是直接使用的第三方库 jose,当然 jose 可以生成 token,想必他也可以校验 token 了。


token 校验


代码


from jose import jwt
# 导入token校验的两种异常,一种是token超时异常,一种是token错误异常
from jose.exceptions import ExpiredSignatureError, JWTError
def judge_token(token):
    # 尝试解密,解密成功后,秘钥,payload,有效时长校验通过,则会返回payload
    try:
        payload = jwt.decode(token,SECRET_KEY)
        print(payload)
        return True
    # 否则,则捕获异常,进行提示
    except ExpiredSignatureError as e:
        print('token过期了!')
        return False
    except JWTError as e:
        print('token验证失败!')
        return False
复制代码


按照传统的 jwt 协议,我们需要解密 token 后,对 token 的秘钥,payload,有效时长进行单独的校验。以上,token 的秘钥,payload,有效时长,jose 都帮我们完成了,我们只需要调用 jose.jwtencodedeode 就可以完成加解密。


执行校验


if __name__ == "__main__":
    tk=create_token()
    print(tk)
    res1=judge_token(tk)
    print(res1)
    import time
    time.sleep(60)
    res2=judge_token(tk)
    print(res2)
复制代码


执行结果


> python utm.py
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTI1Mjg0MzYsInN1YiI6InBoeWdlciIsInVpZCI6IjEyMzQ1NiJ9.yVhoAKyZFvQi3q4wqd1JoRondl9A6wUaALueP00oyhc
{'exp': 1612528436, 'sub': 'phyger', 'uid': '123456'}
True
token过期了!
False```
> 因为默认token的有效期为60秒,我们在第二次校验token前睡眠了61秒,所以第二次的校验结果为过期!
**使用错误的token校验**
```python
if __name__ == "__main__":
    res=judge_token('phyger666')
    print(res)
复制代码


网络异常,图片无法展示
|


以上就是本篇的全部内容了,感谢您的阅读,我们再会。

相关文章
|
存储 安全 数据安全/隐私保护
Token 是什么?全面解析身份认证中的 Token 机制
本文全面解析Token在身份认证中的核心机制,涵盖JWT、Session Token、OAuth等类型,深入讲解其工作原理、安全性策略、生命周期管理及实际应用场景,助力开发者构建安全高效的现代Web应用认证体系。
6113 3
|
JSON 前端开发 JavaScript
前端如何使用WebSocket发送消息
WebSocket是一种在Web应用程序中实现实时双向通信的协议。相比传统的HTTP协议,WebSocket提供了更高效、更快速的双向通信方式,可以在客户端和服务器之间实时交换数据。本文将详细介绍前端如何使用WebSocket发送消息,包括创建WebSocket对象、监听WebSocket事件、发送消息以及关闭连接等步骤,帮助开发者深入了解和应用WebSocket技术。
1476 2
|
Cloud Native Go Windows
Windows 11 电脑如何设置自动开机 (Windows 11 2022H2)
Windows 11 电脑如何设置自动开机 (Windows 11 2022H2)
4833 0
|
数据安全/隐私保护
|
5月前
|
人工智能 安全 API
AI Agent 从“花钱工具”到“赚钱助手”:OpenClaw阿里云/本地部署+API配置+集成交易变现Skill解析及避坑指南
OpenClaw(开发者昵称“小龙虾”)作为现象级开源AI智能体框架,凭借“自然语言驱动任务执行”的核心能力,成为2026年最热门的工具之一。但用户普遍面临一个痛点:模型调用、技能使用的Token消耗过高,长期使用成本不菲。而MoltsPay支付工具的出现,彻底改变了这一现状——它为OpenClaw赋予了支付与交易能力,让AI Agent不仅能“替你干活”,还能“为你赚钱”,通过承接其他Agent的任务订单获取收益,实现自我“造血”。
942 2
|
8月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序项目落地的第一步,也是最关键的一步,就是开发平台的精准选型。它不仅影响项目的开发周期与成本投入,更直接决定了后续业务的适配度和运营上限。企业需结合自身技术能力、预算区间、功能需求等核心要素综合权衡。本文将对主流小程序开发平台进行分类拆解,通过详细对比和场景化推荐,帮助不同类型的企业找到最契合的解决方案。
766 9
|
安全 API 开发工具
什么是Token
Token是一种用于身份验证和授权的凭证,广泛应用于云计算、API调用、实时音视频通信等场景。它通过加密算法生成,确保请求合法性与服务安全性。Token的核心作用包括身份验证、权限控制、安全保障和无状态化设计。生成方式有控制台、SDK、OpenAPI、JWT和服务端生成等。Token通常包含AppID、UserID、时间戳等字段,并通过哈希算法计算。应用场景涵盖智能语音交互、实时音视频通信、API网关和STS临时访问凭证等。使用时需注意有效期、密钥管理、权限设置和传输安全。
7184 4
|
存储 监控 安全
日志审计是什么?为什么企业需要日志审计?
日志审计是对信息系统中产生的日志进行收集、分析和存储的过程,记录系统活动如用户登录、操作行为等。企业通过日志审计可满足合规要求(如金融、医疗行业的法规),及时发现安全威胁(如异常登录、数据泄露),并为事故调查提供依据。工具如EventLog Analyzer能帮助企业生成合规报表,确保符合PCI DSS、HIPAA等标准,并支持实时监控与存档分析,保障网络安全与数据隐私。
1076 2

热门文章

最新文章