simpleJWT使用详解
前端使用,不同于JWT
headers: { 'Authorization': 'Bearer ' + this.token },
关键字不是JWT中的JWT,而是Bearer
simpleJWT使用自定义序列化器(不同于官方文档的用法):
1 2 3 4 5 6 7 8 9 10 11 12 | class MyTokenObtainPairSerializer(TokenObtainPairSerializer): def validate( self , attrs): data = super ().validate(attrs) refresh = self .get_token( self .user) data[ 'refresh' ] = str (refresh) data[ 'access' ] = str (refresh.access_token) # Add extra responses here data[ 'username' ] = self .user.username data[ 'user_id' ] = self .user. id return data |
simpleJWT重写验证后端实现多账户登录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from django.contrib.auth.backends import ModelBackend from users.models import User def get_user_by_account(account): try : user = User.objects.get(username = account) except User.DoesNotExist: try : user = User.objects.get(nickname = account) except User.DoesNotExist: return None return user class UsernameNicknameAuthBackend(ModelBackend): '''修改django认证类实现多账号登录''' def authenticate( self , request, username = None , password = None , * * kwargs): user = get_user_by_account(username) if user and user.check_password(password): return user |
同时要在设置文件中settings.py设置自定义后端验证的路径:
我的是写在子应用的utils.py文件中的
1 2 | # 修改django用户认证后端类实现多帐号登录 AUTHENTICATION_BACKENDS = [ 'users.utils.UsernameNicknameAuthBackend' ] |
simpleJWT文档链接:https://django-rest-framework-simplejwt.readthedocs.io/en/latest/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通