rest_framework之认证组件
一 认证简介
只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件
二 局部使用
(1)models层:
class User(models.Model):
username=models.CharField(max_length=32)
password=models.CharField(max_length=32)
user_type=models.IntegerField(choices=((1,'超级用户'),(2,'普通用户'),(3,'二笔用户')))
# 如果数据少可以不建表,采用这种方式
class UserToken(models.Model):
user=models.OneToOneField(to='User')
#与user表建一对一的关系
token=models.CharField(max_length=64)
(2)新建认证类(验证通过return两个参数)
from rest_framework.authentication import BaseAuthentication
class TokenAuth():
def authenticate(self, request):
token = request.GET.get('token')
token_obj = models.UserToken.objects.filter(token=token).first()
if token_obj:
return #这里可以返回数据,第一个在需要认证的函数中为user,第二位auth可以取出
else:
raise AuthenticationFailed('认证失败')
#如果报错可以返回这个异常
def authenticate_header(self,request):
#如果不继承BaseAuthentication类,则需写这个函数
pass
(3)view层
def get_random(name):
'''用来生成hsah值'''
import hashlib
import time
md