[WEB] DRF利用JWT实现用户认证
作者:精品下载站 日期:2022-03-16 00:00:00 浏览:70 分类:站长帮
根据上一篇文章可以知道JWT的原理和意义
所以在这里分享一下jwt在drf中的应用
auth.py
将jwt写出来
import datetime
import jwt
from django.conf import settings
from jwt import exceptions
from rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import AuthenticationFailed
def create_token(payload, exp=30):
headers = {'typ': 'jwt', 'alg': 'HS256'}
payload['exp'] = datetime.datetime.utcnow() + datetime.timedelta(days=exp)
return jwt.encode(payload, settings.SECRET_KEY, "HS256", headers)
class JwtAuthentication(BaseAuthentication):
def authenticate(self, request):
# 获取请求头中Token
token = request.META.get('HTTP_TOKEN')
try:
payload = jwt.decode(token, settings.SECRET_KEY, "HS256")
except exceptions.ExpiredSignatureError:
raise AuthenticationFailed({'code': 204, 'msg': 'Token已失效'})
except jwt.DecodeError:
raise AuthenticationFailed({'code': 204, 'msg': 'Token认证失败'})
except jwt.InvalidTokenError:
raise AuthenticationFailed({'code': 204, 'msg': 'Token非法'})
return payload, token
settings.py
在drf的view中全局应用此认证方式
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES": ['utils.auth.JwtAuthentication']
}
views.py
一个登录的view,将认证方式设为空,另外一个可以直接获取
# Create your views here.
from rest_framework.views import APIView
from utils.auth import create_token
from utils.commen import standard_response
class LoginView(APIView):
authentication_classes = []
@staticmethod
def post(request, *args, **kwargs):
username = request.data.get('username')
password = request.data.get('password')
if not username == 'lan' and password == 'password':
return standard_response(None, msg='用户名或密码错误')
token = create_token({'username': username})
return standard_response(data=token, msg='登陆成功')
class IndexView(APIView):
@staticmethod
def post(request, *args, **kwargs):
return standard_response(data='来源网站:www.lanol.cn', msg=f'欢迎您{request.user["username"]}')
登录获取Token
验证Token成功
Token超时失效
这个auth.py不止在drf中可用,其他的web框架,fastapi啥的也是通用的,只要将返回改一下即可
猜你还喜欢
- 03-12 [建站系列] 如何轻松搭建专业企业邮箱:从域名到收发邮件的完整指南
- 03-12 [建站系列] Cloudflare R2个人免费图床:如何设置和使用Cloudflare R2图床
- 06-04 [站长技术] 如何开启WordPress Multisite多站点网络
- 03-29 [环境测试] Hexo部署GitHub Pages
- 03-22 [源码设置] 如何设置Xiuno BBS URL-Rewrite(伪静态设定)
- 03-06 [建站交流] PicGo + smms 构建图床
- 11-18 [emlog技巧] Emlog非插件显示评论者IP属地
- 11-09 [网站维护] WordPress 后台速度慢?加快仪表板速度的 15 种方法
- 11-09 [WordPress插件] 10 个最好用的 WordPress 聊天机器人插件(免费和付费)
- 11-09 [WordPress开发] 探索 WordPress 6.3 中的增强样板(Patterns)
- 11-09 [网站维护] 无需插件即可优化 WordPress 速度的 12 种策略
- 11-09 [网站安全] WordPress 安全统计:WordPress 到底有多安全?
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[短剧合集] 2025年06月2日 精选+付费短剧推荐39部
[软件合集] 25年6月2日 精选软件18个
[软件合集] 25年6月1日 精选软件15个
[短剧合集] 2025年06月1日 精选+付费短剧推荐59部
[短剧] 2025年05月31日 精选+付费短剧推荐58部
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag