- 身份认证
from rest_framework.authentication import BaseAuthentication
- 导入自定义算法解析token
from utils.TokenIssue import Token_Issue
class NewBaseAuthentication(BaseAuthentication):
def authenticate(self, request):
- 认证模块工作原理:
1)继承BaseAuthentication类,重写authenticate方法
2)认证规则(authenticate方法实现体):
没有携带认证信息,直接返回None => 游客
有认证信息,校验失败,抛异常 => 非法用户
有认证信息,校验出User对象 => 合法用户
- 验证token
- 1. 拿到前台token
token = request.META.get('HTTP_TOKEN')
if not token: # 没有就是游客模式呗
return None
- 解析token
issue = Token_Issue()
- 调用自定义密码加密解密算法,传进去token, 返回一个对象
user_obj = issue.resolve_token(token)
- 4. 检验成功返回一个元组(user_obj, token)
return (user_obj, token)
REST_FRAMEWORK = {
# 认证模块
'DEFAULT_AUTHENTICATION_CLASSES': [
- 游客模式,不验证
'rest_framework.authentication.SessionAuthentication',
- 验证有token的时候
'rest_framework.authentication.BasicAuthentication',
- 自定义认证类
'utils.authentications.NewBaseAuthentication'
],
}