jwt全称json web token,用于认证用户身份信息的,即保持会话状态
安装pip install pyjwt
方法 | 参数说明 | 返回值 |
encode(payload, key, algorithm) | payload:字典类型的私有声明和公有声明,例如:{'username':'zhangsan','exp':1237365239}key:自定义的字符串,用于加密的key值,不要外泄algorithm:声明你要用哪种算法签名,例如HS256 | token串,返回类型:bytes |
| | |
decode(token,key) | token:token串,参数类型bytes/strkey:自定义的加密key,需要跟encode中的key保持一直,参数类型strissuer:发布者,若encode中的payload添加了iss字段,则可针对该字段进行校验,参数类型straudience:签发的受众群体,若encode内的payload中添加了aud字段,则可针对该字段校验,参数类型str | payload明文,返回类型是dict若iss校验失败则抛出jwt.inavlidissuerError若aud校验失败,则抛出jwt.InvalidAudienceError |
加密解密示例:
特殊说明:
若encode中payload添加了exp字段,则exp字段的值需为:当前时间戳+此token的有效期时间,例如:
希望token300秒后过期:
在执行decode时,若检查到exp字段,且token过期,则会抛异常jwt.ExpiredSignatureError,
示例:
前后端分离场景下使用JWT:
原则:
1,JWT签发后,交由浏览器保存
2,浏览器可将其存储在”本地存储“中,不要存到cookies里,防范csrf攻击
3,需要用户登录才能使用此功能,前端ajax中需要将jwt传至后端,可放在请求头中发送