Как ограничить AuthenticateCallbackView в django-microsoft-auth только зарегистрированными учетными записями?
Я использую django-microsoft-auth
в своем проекте Django. Я пытаюсь ограничить эту опцию только зарегистрированными пользователями, чтобы только люди, которые уже зарегистрировались, могли использовать кнопку Log in with Microsoft.
Я нашел в AuthenticateCallbackView
метод под названием _authenticate
. Код ниже:
def _authenticate(self, code):
if "error" not in self.context["message"]:
if code is None:
self.context["message"] = {"error": "missing_code"}
else:
# authenticate user using Microsoft code
user = authenticate(self.request, code=code)
if user is None:
# this should not fail at this point except for network
# error while retrieving profile or database error
# adding new user
self.context["message"] = {"error": "login_failed"}
else:
login(self.request, user)
Мне интересно, как я могу ограничить аутентификацию только теми, у кого есть учетные записи. В случае, если у кого-то нет учетной записи, он будет посылать сообщение: Пожалуйста, сначала зарегистрируйте свой аккаунт.
Вы можете расширить MicrosoftAuthenticationBackend
, чтобы переопределить метод authenticate
. Не забудьте загрузить свои настройки для использования собственного бэкенда аутентификации.
Попробуйте что-нибудь вроде следующего:
class MyAuthenticationBackend(MicrosoftAuthenticationBackend):
def authenticate(self, request):
email = request.POST.get("email") # replace this username or any other attribute used for auth
if User.objects.filter(email=email).exists():
return super().authenticate(request)
return None