JWT

2.1.什么是JWT。

是一个通过进行生成token的东西,在通过token在进行判断这个信息是不是本台服务器发出的以及对一些信息的加密

2.2.JWT的组成以及每部分的作用。

JWT是由三部分组成头部分,载荷,签名
头:基本信息,令牌声明
载荷是签发的时间,过期时间,自定义内容,
签名:是对头和载荷进行加密,加密时再加上一个随机数,只要随机数不丢失,那就没有事

2.3.在dajngo中如何使用JWT,(写出重要方法或配置)

JWT的使用:

 pip install djangorestframework-jwt
 
 INSTALLED_APPS=[
'rest_framework.authtoken'
]

import datetime

JWT_AUTH = {
     
    'JWT_AUTH_HEADER_PREFIX': 'JWT',
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
    # 重新login登录返回函数
    'JWT_RESPONSE_PAYLOAD_HANDLER':
        'app01.views.My_token',//你那个登录的视图
}

在使用JWT进行登录
在使用 JWT中进行登录时,我们直接使用它只带的登录就好

from rest_framework_jwt.views import obtain_jwt_token
path('login/', obtain_jwt_token),

在登录后返回的数据名字随便 是要继承token就可以

def My_token(token, user=None, request=None):
    return {
     'username': user.username,
            'token': user.token}

重写登录,达到多方登录的效果注意的继承方法

class LoginView1(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            user_obj = User.objects.get(Q(username=username)|Q(phone=username)|Q(email=username))
        except User.DoesNotExist:
            pass
        else:
            if user_obj is not None and user_obj.check_password(password):
                print(user_obj)
                return user_obj

注册:
因为我们在注册时候,注册完毕之后之间进去了不需要再次登录,(这一点我们到时候可以在前端注册成功后调用登录视图,都是可以的)

from rest_framework_jwt.settings import api_settings
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
payload = jwt_payload_handler(user_obj)
token = jwt_encode_handler(payload)
user_obj.token = token
//就获取到了token,然后就是前端的是

你可能感兴趣的:(dajngo)