django用它自带的验证模块登陆

django用它自带的验证模块登陆

首先你的用户模块要使用django的用户模块:

from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
	pass

然后要在setting里面配置AUTHENTICARION_BACKENDS:

AUTHENTICATION_BACKENDS=(
    'django.contrib.auth.backends.ModelBackend',
)

Django维护一个”authentication backends”的列表用来测试认证。当调用 django.contrib.auth.authenticate() — Django将尝试所有的认证后端。如果第一个认证方法失败了,Django将会继续尝试第二个,直到所有的都被尝试过。
认证后端的列表在 AUTHENTICATION_BACKENDS 设置。内容应该是包含Python路径的元组。默认情况下, AUTHENTICATION_BACKENDS 设置为
(‘django.contrib.auth.backends.ModelBackend’,),这是检测Django用户数据库的基本认证方案。
按照 AUTHENTICATION_BACKENDS 的排列顺序,如果同样的用户名和密码在第一次就匹配了,那么Django将停止处理后面的东西。
然后配置其过期时间

import datetime
JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=1000),#设置jwt过期时间,默认是300秒
    'JWT_RESPONSE_PAYLOAD_HANDLER':'register.utlis.jwt_response_username_userid_token'#自动调用JWT,用来base64解码
}

因为我项目是写在utlis中jwt_response_username_userid_token的,所以配置的时候是这么写的,你写自己对应的路径
django用它自带的验证模块登陆
在这里配置这个方法:

 def jwt_response_username_userid_token(token,user=None,response = None):
    '''
    当jwt登陆后,返回自定义的相应内容
    :return:
    '''
    data={
        'token':token,
        'username':user.username,
        'user_id':user.id,
    }
    return data

配置完成之后就可以在路由中直接使用这个进行自动验证登陆了,

from rest_framework_jwt.views import obtain_jwt_token
urlpatterns = [
	url(r'^login/', obtain_jwt_token),
]
上一篇:# Django 2.2.*问题记录


下一篇:Django Rest Framework 电商项目 5-11 DRF的搜索和排序