这篇文章主要讲解了django使用JWT保存用户登录信息的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
<强>什么是JWT ? 强>
Json web标记(JWT),是为了在网络应用环境间传递声明而执行的一种基于Json的开放标准((RFC 7519)。该令牌被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该令牌也可直接被用于认证,也可被加密。
JWT最普遍的一个作用就是用来保存用户的登录信息。
<强> 1。签发JWT 强>
在用户正确输入账号密码成功登录后,服务端就会签发JWT。
django使用第三方库djangorestframework-jwt生成JWT,所以先安装第三方包。
pip安装djangorestframework-jwt
引用>然后需要在django的配置上增加:
REST_FRAMEWORK={ & # 39;DEFAULT_AUTHENTICATION_CLASSES& # 39; ( & # 39;rest_framework_jwt.authentication.JSONWebTokenAuthentication& # 39; # jwt认证 & # 39;rest_framework.authentication.SessionAuthentication& # 39; #管理后台使用 & # 39;rest_framework.authentication.BasicAuthentication& # 39; ), … } JWT_AUTH={#导包:进口datetime & # 39;JWT_EXPIRATION_DELTA& # 39;: datetime.timedelta(天=1),# jwt有效时间 }然后就可以签发JWT了。
。设置导入api_settings jwt_payload_handler=api_settings。JWT_PAYLOAD_HANDLER #生载荷部分的方法 jwt_encode_handler=api_settings。JWT_ENCODE_HANDLER #生成jwt的方法 # {& # 39;exp # 39;: xxx, & # 39;电子邮件# 39;:& # 39;& # 39;,& # 39;user_id # 39;: 1 & # 39;用户名# 39;:& # 39;行政与# 39;} #用户:登录的用户对象 有效载荷=jwt_payload_handler(用户)#生成有效载荷,得到字典 令牌=jwt_encode_handler(载荷)#生成jwt字符串生成之后,通过JSON字符串的方式返回给前端。
<强> 2。前端保存JWT 强>
前端有两种方式储存数据,分别是localStorage和sessionStorage。
HTML5提供了两种在客户端存储数据的新方法:
- localStorage永久数据存储;不同页面数据共享
- sessionStorage临时存储,关闭页面或浏览器后会被清除;(读sessionStorage取的数据时,仅当前页面(窗口)有效,但是JWT toekn会保存直到浏览器关闭)sessionStorage
。关键=val//保存数据sessionStorage
。键//读取数据
sessionStorage.clear()//清除所sessionStorage有保存的数据
sessionStorage.removeItem(& # 39;关键# 39;);
localStorage。关键=val//保存数据
localStorage。键//读取数据
localStorage.clear()//清除所有localStorage保存的数据
localStorage.removeItem(& # 39;关键# 39;);<强> 3。前端发送JWT 强>
前端会通过请求头把JWT带上,传给服务端。
var配置={ 标题:{//请求头 & # 39;授权# 39;:& # 39;JWT & # 39;+。令牌# JWT后面有一个空格! }, }; axios.get (& # 39; http://api.meiduo.site: 8000/测试/& # 39;,配置) 不要犹豫(反应=比;{}) .catch(错误=比;{});<强> 4。校验JWT 强>
在前端有JWT后,再次登录服务端,服务端就会对这串JWT进行校验,如果有修改就不会通过,如果过期了也不会通过。
看完上述内容,是不是对django使用JWT保存用户登录信息的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。
django使用JWT保存用户登录信息的方法