Я использую dj_rest_auth для аутентификации своих пользователей и возникает проблема с регистрацией. После того, как я создаю пользователя с помощью RegisterView, который дает dj_rest_auth, django создает пользователя без проблем, но хеширование пароля неверно, и поэтому я не могу войти в систему с новым созданным пользователем. Это мой вид регистрации:
registerview.py
class UserRegisterAPIView(RegisterView):
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
# user.set_password(make_password(request.data.get('password'))) Didn't work
user = self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(self.get_response_data(user),
status=status.HTTP_201_CREATED,
headers=headers)
def perform_create(self, serializer):
user = serializer.save(self.request)
create_token(self.token_model, user, serializer)
complete_signup(self.request._request, user,
allauth_settings.EMAIL_VERIFICATION,
None)
return user
РЕДАКТИРОВАТЬ: это один и тот же пароль, но хешированный по-разному (первый - это представление реестра dj_rest_auth, второй создается в панели администратора). Если я использую второй пароль для других пользователей, они успешно входят в систему.
set_password
до или после создания пользователя? Также вам все еще нужно позвонитьuser.save()
послеset_password
- person JoseKilo   schedule 06.11.2020request.data.get("something")
для создания моделей, поэтому Я думаю, это работает. - person altF4   schedule 06.11.2020set_password
вperform_create
послеuser=serializer.save
, это не сработало, поэтому я попытался вызвать методcreate
, и это также не сработало, затем я спросил в stackoverflow - person altF4   schedule 06.11.2020perform_create
вы звонитеuser = serializer.save(...)
, сразу после этого я звонюuser.set_password(...)
, а затемuser.save()
. Это то, что вы пробовали в первую очередь? - person JoseKilo   schedule 06.11.2020password1
? github.com/jazzband/dj- rest-auth/blob/master/dj_rest_auth/ - person JoseKilo   schedule 06.11.2020password
, но когда я смотрел в сериализатор, я увидел, что у сериализатора есть методsave()
, и я написал тамset_password(...)
, и это, наконец, сработало. Если хочешь, напиши это как ответ, и тогда я приму его. - person altF4   schedule 06.11.2020