较为简单,看代码和注释
class AuthView(APIView):
# 使用这个局部认证配置覆盖全局的认证配置。值为[],表示不进行认证。
authentication_classes = []
permission_classes = []
throttle_classes = []
"""
用户认证(登录)接口
"""
def post(self, request):
"""
模拟用户的登录请求。
:param request:
:return:
"""
data = {
'code': 1000,
'status': 1,
'error': 0,
}
try:
username = request.data.get('username')
password = request.data.get('password')
results = UserInfo.objects.filter(username=username, password=password)
if results:
# 用户传递的用户名和密码是正确的,此时给用户返回token,用户在发生接下来的请求时,必须携带这个token,然后后台会对这个token进行认证,如果认证成功(request.user, request.auth赋值),如果认证失败(request.user, request.auth的值为None)。
# 创建token值,给用户返回过去。
token = md5(username)
# 首先要将这个token在数据库中保留一份,将来用于和用户上传的token值进行对比
# 用户第一次登陆,需要创建,后续再登录直接更新token即可。
UserToken.objects.update_or_create(user=results[0], defaults={'token': token})
data['token'] = token
else:
data['error'] = 1
data['status'] = 0
data['message'] = '用户名或者密码错误'
except:
data['error'] = 1
data['status'] = 0
data['message'] = '异常'
return JsonResponse(data)
注意:
别忘了settings.py的配置
INSTALLED_APPS = [
'rest_framework',
'corsheaders',
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
]
(CORS_ORIGIN_ALLOW_ALL = True)