У меня есть пользовательская модель в django здесь:
class UserManager(BaseUserManager):
def create_User(self, email, name, companyname=None, userphoto=None,
userphotokey=None, signupvalidatestring=None, is_active=False, phone=None, jobtitle=None,
isclient=False, issuitsviewer=False, issuitsadministrator=False, issuitssuperuser=False,
password=None):
if not email:
raise ValueError('Users must have an email address')
if not name:
raise ValueError('Users must have a name')
user = self.model(email = self.normalize_email(email),
name = name,
companyname= companyname,
userphoto= userphoto,
userphotokey=userphotokey,
signupvaildatestring=signupvalidatestring,
is_active=is_active,
phone=phone,
jobtitle=jobtitle,
isclient=isclient,
issuitsviewer = issuitsviewer,
issuitsadministrator=issuitsadministrator,
isuitssuperuser=issuitssuperuser)
if not password:
user.set_unusable_password()
else:
user.set_password(password)
user.is_active = True
user.save(using=self._db)
return user
def create_superuser(self):
pass
# permissions table
class STUser(AbstractBaseUser):
email = models.EmailField(unique=True)
name = models.CharField(max_length=255)
companyname = models.CharField(max_length=200, blank=True, null=True)
userphoto = models.CharField(max_length=200, blank=True, null=True)
userphotokey = models.CharField(max_length=200, blank=True, null=True)
signupvaildatestring = models.CharField(max_length=200, blank=True, null=True)
is_active = models.BooleanField(default=False)
phone = models.CharField(max_length=10, null=True, blank=True)
jobtitle = models.CharField(max_length=100, null=True, blank=True)
isclient = models.BooleanField(default=False)
issuitsviewer = models.BooleanField(default=False)
issuitsadministrator = models.BooleanField(default=False)
issuitssuperuser = models.BooleanField(default=False)
# password field function is provided by AbstractBaseUser
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name']
EMAIL_FIELD = 'email'
class VenuePermissions(models.Model):
user = models.ForeignKey(STUser, on_delete=models.CASCADE)
venue = models.ForeignKey(Venue, on_delete=models.CASCADE, blank=True, null=True)
isvenueviewer = models.BooleanField(default=False)
isvenueeventplanner = models.BooleanField(default=False)
isvenueadministrator = models.BooleanField(default=False)
receiverfp = models.BooleanField(default=False)
У меня есть класс аутентификации jwt:
#REST Framework
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
У меня есть конечная точка URL:
from rest_framework_jwt.views import obtain_jwt_token
url(r'^api-token-auth/', obtain_jwt_token),
когда я создаю пользователя в оболочке следующим образом:
>>> from STuser.models import STUser
>>> user = STUser(email='blah@gmail.com',name='Christopher Jakob',password='zaq11qaz')
>>> user.save()
, затем запускаю сообщение curl:
curl -X POST -d "email=blah@gmail.com&password=zaq11qaz" http://127.0.0.1:8000/api-token-auth/
, а также пробую реализацию JSON
curl -X POST -H "Content-Type: application/json" -d '{"email":"blah@gmail.com","password":"zaq11qaz"}' http://127.0.0.1:8000/api-token-auth/
Я также пытался с помощью wget:
wget --post-data="email=christopher.m.jakob@gmail.com&password=zaq11qaz" http://127.0.0.1:8000/api-token-auth
/
Я получаю следующую ошибку:
{"non_field_errors":["Unable to log in with provided credentials."]}
"POST /api-token-auth/ HTTP/1.1" 400 68
Однако email
и password
информация, которую я отправил, - это то, что находится в базе данных.
Я не уверен, что здесь происходит.Мне интересно, если это в моем менеджере?Но я бы вообразил, что в таком случае пользовательские объекты вообще не будут добавлены.Как вы видите, я использую пользовательскую модель.
вот ресурс, который я использую:
https://getblimp.github.io/django-rest-framework-jwt/
вопрос, который может помочь мне найтив него: Django (с использованием TokenAuthentication): "non_field_errors": "Невозможно войти в систему с предоставленными учетными данными?
этот вопрос может также помочь: поиск в нем. JSON WebТокен для Django REST не аутентифицируется в базе данных пользователей
Соответствующий код в пакете, который я использую, начинается со строки 22 * 1047 *https://github.com/GetBlimp/django-rest-framework-jwt/blob/master/rest_framework_jwt/serializers.py