Django框架(二十七:rest_framework 模拟登陆)

较为简单,看代码和注释

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)

你可能感兴趣的:(Django,rest_framework)