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的,所以配置的时候是这么写的,你写自己对应的路径
在这里配置这个方法:
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),
]