django-rest-framework(实战篇)——JWT用
2018-04-11 本文已影响73人
Ccccolin_aha
http://lion1ou.win/2017/01/18/
使用json-web-token
第三方模块:django-rest-framework-jwt
-
安装:
pip install djangorestframework-jwt
-
将jsonWebAuth加入到drf 的default auth class中:
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
- 配置url
url(r'^login/', obtain_jwt_token),
自定义Django用户认证函数
首先在setting中设置变量:
# 设置邮箱和用户名和手机号均可登录
AUTHENTICATION_BACKENDS = (
'users.views.CustomBackend',
)
在user/view.py中
class CustomBackend(ModelBackend):
"""
自定义用户验证规则
"""
def authenticate(self, username=None, password=None, **kwargs):
try:
# 不希望用户存在两个,get只能有一个。两个是get失败的一种原因
# 后期可以添加邮箱验证
user = User.objects.get(
Q(username=username) | Q(mobile=username))
# django的后台中密码加密:所以不能password==password
# UserProfile继承的AbstractUser中有def check_password(self,
# raw_password):
if user.check_password(password):
return user
except Exception as e:
return None
JWT的过期时间设置
# 与drf的jwt相关的设置
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=20),
'JWT_AUTH_HEADER_PREFIX': 'JWT',
}