您的位置:首页 > 编程语言 > Go语言

Django-rest-framework-JWT之(JWT原理解析及配置和错误解决)

2020-01-15 08:18 1941 查看

文章目录

1.测试工具

使用的Web接口测试工具:Postman

2.JWT原理介绍

  • JWT的介绍以及对比,参考文章:参考文章1参考文章2
  • JWT配置后就不会生成Token表了,原因参考上述文章

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中)
  • 点赞
  • 收藏
  • 分享
  • 文章举报
zhangFreedom 发布了7 篇原创文章 · 获赞 0 · 访问量 199 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐