首页 >> 大全

Django中的JWT登陆认证机制

2023-09-14 大全 38 作者:考证青年

在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用认证机制,而使用Json Web Token认证机制。

很多公司开发的一些移动端可能不支持,并且我们通过和做接口登录认证的话,效率其实并不是很高,我们的接口可能提供给多个客户端,数据保存在服务端,那么就需要每次都调用数据进行验证,比较耗时,所以引入了token认证的概念,我们也可以通过token来完成,我们来看看jwt是怎么玩的。

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

JWT的构成

JWT就一段字符串,由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串。

第一部分我们称它为头部(),第二部分我们称其为载荷(, 类似于飞机上承载的物品),第三部分是签证().

用户登录认证机制_登录认证是怎么回事_

jwt的头部承载两部分信息:

载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品,这些有效信息可以存放下面三个部分信息。

JWT的第三部分是一个签证信息,这个签证信息由三部分组成:

注意:是保存在服务器端的,jwt的签发生成也是在服务器端的,就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流露出去。一旦客户端得知这个, 那就意味着客户端是可以自我签发jwt了。

jwt的优点:
1. 实现分布式的单点登陆非常方便
2. 数据实际保存在客户端,所以我们可以分担都武器的存储压力
3. JWT不仅可用于认证,还可用于信息交换。善用JWT有助于减少服务器请求数据库的次数,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。jwt的缺点:
1. 数据保存在了客户端,我们服务端只认jwt,不识别客户端。
2. jwt可以设置过期时间,但是因为数据保存在了客户端,所以对于过期时间不好调整。

这里是直接封装了一下

import jwtclass Jwt_token:def __init__(self)->None:self.secret_key="!@#$%^%$#$%$#$%(*&^#@¥%¥#@¥@#¥%……¥#@#!@#¥%"# 生成tokendef create_token(self,data):return jwt.encode(data,self.secret_key,algorithm='HS256')# 解析tokendef jiexi_token(self,token):return jwt.decode(token,self.secret_key,algorithms='HS256')# 对比tokendef check_token(self,token):try:payload = jwt.decode(token,self.secret_key,algorithms='HS256')newtoken = jwt.encode(payload,self.secret_key, algorithm='HS256')if newtoken == token:return Trueexcept:passreturn Falsejwt_token = Jwt_token()
# data = {"data":{"user_id":1,"username":"张三"}}
# token = jwt_token.create_token(data)
# print(token)
# to_token = jwt_token.jiexi_token(token)
# print(to_token)
# aa = jwt_token.check_token(token)
# print(aa)

当然,也可以在里配置

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了