Django-rest-framework-JWT之(JWT原理解析及配置和错误解决)
2020-01-15 08:18
1941 查看
文章目录
1.测试工具
使用的Web接口测试工具:Postman
2.JWT原理介绍
3.Django-rest-framework-JWT安装配置及其错误处理
- 使用:在github搜索django-rest-framework-jwt 或:点击跳转
进入后点击跳转:进入官方文档(查看依赖和具体配置)
- 具体配置如下
安装参考上述官方文档:
配置如下:
(1)在你的settings.py,添加JSONWebTokenAuthentication到Django REST框架DEFAULT_AUTHENTICATION_CLASSES。
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES':( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), }
(2)在urls.py添加以下URL路由以启用通过POST获取令牌包括用户的用户名和密码。
from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [ url(r'^login/', obtain_jwt_token), ]
(3)jwt相关使用(setting.py中配置):
import datetime JWT_AUTH={ #Token失效时间 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7), #Token前缀 'JWT_AUTH_HEADER_PREFIX': 'JWT' }
(4)自定义用户验证(obtain_jwt_token默认为使用用户名和密码):
#setting中添加BANCENDS AUTHENTICATION_BACKENDS=( #将bancends添加进setting 'users.views.CustomBackend', )
切记:此处自定义的视图函数继承ModelBackend类,并重写其内部函数authenticate。
若是使用正确的用户名和密码登录报错:
点击继承的类,查看重写的函数,是由于该函数缺少 request 参数引发的
#users.views中重写authenticate认证 from django.contrib.auth.backends import ModelBackend from django.contrib.auth import get_user_model from django.db.models import Q User=get_user_model() # Create your views here. class CustomBackend(ModelBackend): ''' 自定义用户验证(setting.py) ''' def authenticate(self, request, username=None, password=None, **kwargs): try: user=UserProfile.objects.get(Q(username=username)|Q(mobile=username)) if user.check_password(password): return user except Exception as e: return None
4.测试
- 模拟首次访问(登陆)
- 登陆后请求数据(模拟携带token请求数据,放在HTTP Headers中)
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 芦苇打代码--django-rest-framework-jwt验证身份AnonymousUser错误
- 自定义Django_rest_framework_jwt登陆错误返回
- Django配置163邮箱出现 authentication failed(535)错误解决方法
- Spring MVC的Rest URL 被错误解析成jsp, 导致404错误(XML方式下@Controller和@RestController需要配置<mvc:annotation-driving/>)
- 基于django-rest-framework的JWT的登陆与认证流程
- Django REST framework JWT认证方式和BasicAuthentication认证方式实现认证用户与未认证用户访问同一视图类并得到不同的功能
- django-rest-framework解析请求参数过程详解
- zend framework Bootstrap.php数据库适配器配置及错误解决
- RuntimeError at /jwt-auth django rest_framework
- django mysql数据库配置以及管理界面提交中文错误解决
- Django框架rest_framework中APIView的as_view()源码解析、认证、权限、频率控制
- 运行django项目是报No module named 'rest_framework'错误
- 深入解析当下大热的前后端分离组件django-rest_framework系列
- Maven下package导出Jar时hibernate配置文件路径解析错误解决方法
- linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析
- mybatis配置文件解析错误解决方法
- 手把手教你:Ubuntu+django+apache下配置网页错误OperationalError: Unable to Open Database File 的解决方法
- Ubuntu+django+apache下配置网页错误OperationalError: Unable to Open Database File 的解决方法
- Django REST framework JWT
- django的REST framework JWT一些使用技巧