Django 如何进行正确的身份验证?
我正在triyng与Django进行身份验证,更改模型添加Django 如何进行正确的身份验证?,django,authentication,Django,Authentication,我正在triyng与Django进行身份验证,更改模型添加用户名\u字段,并创建一个视图进行登录,但仍然无法工作。我使用电子邮件作为用户名 Django==2.2.8 django-cors-headers==3.2.0 django-filter==2.2.0 djangorestframework==3.10.3 我的代码: 用户模型: 类用户(AbstractBaseUser, UGCModel): 类元: 应用程序标签='用户' first_name=models.CharField(
用户名\u字段
,并创建一个视图进行登录,但仍然无法工作。我使用电子邮件作为用户名
Django==2.2.8
django-cors-headers==3.2.0
django-filter==2.2.0
djangorestframework==3.10.3
我的代码:
用户模型:
类用户(AbstractBaseUser,
UGCModel):
类元:
应用程序标签='用户'
first_name=models.CharField(最大长度=100)
last_name=models.CharField(最大长度=100)
email=models.EmailField(最大长度=254,唯一性=True)
username=models.CharField(最大长度=150,唯一性=True)
email_verified=models.BooleanField(默认值=False)
genre=models.CharField(max_length=1,choices=GENRES,blank=True)
出生日期=模型。日期字段(空白=假,空=真)
cep=models.CharField(验证器=[v.validate\u cep],最大长度=100)
用户名\字段='USERNAME'
定义(自我):
返回“(用户)%s”%self.email
我的看法是:
def post(self, request, format=None):
errors = None
serializer = self.get_serializer(data=request.data)
if not serializer.is_valid():
errors = serializer.errors
else:
username = request.data['username']
password = request.data['password']
user = authenticate(self, username=username, password=password)
if user:
pass
else:
errors = 'check username or password'
if not errors:
login(request, user)
user.relationships.flush_cache()
data = {'detail': 'authenticated',
'super' : user.super_user,
'key': Token.objects.get(user=user).key}
return Response(data, status=status.HTTP_200_OK)
detail = {'detail': errors}
return Response(detail, status=status.HTTP_400_BAD_REQUEST)
我将其添加到设置中:
AUTH_USER_MODEL = "user.User"
用户已成功创建:
uid: "_e8f35f44afa8"
username: "vini@gmail.com"
password: "123123"
first_name: "vini"
cep: "05407-002"
last_name: "morais"
email: "vini@gmail.com"
date_of_birth: null
但是身份验证总是失败
vini@gmail.com 123123
check username or password
Bad Request: /login
WARNING:django.request:Bad Request: /login
[20/Dec/2019 23:51:03] "POST /login HTTP/1.1" 400 39
身份验证将:
身份验证(self,username=username,password=password)
,但它不起作用。我忘记了要设置的内容?是否同时使用SessionAuthentication
和TokenAuthentication
?因为SessionAuthentication
不需要令牌,TokenAuthentication
不需要authentication
用户。因此,如果我只使用django.contrib.auth
如何生成令牌?