Аутентификаторы переписки в аутентификации электронной почты django-social-auth - PullRequest
2 голосов
/ 02 февраля 2012

Недавно я добавил дополнительный бэкэнд аутентификации, чтобы позволить пользователям входить в систему, используя либо свой адрес электронной почты, либо имя пользователя, но, похоже, он нарушает django-social-auth, так как после его включения при попытке войти через Facebook я получаю сообщениеIncorrect authentication service

Код бэкэнда:

class EmailBackend:
    supports_object_permissions = False
    supports_anonymous_user = False
    supports_inactive_user = False 

    def authenticate(self, username=None, password=None):
        if email_re.search(username):
            try:
                user = User.objects.get(email=username)
            except User.DoesNotExist:
                return None
        else:
            try:
                user = User.objects.get(username=username)
            except User.DoesNotExist:
                return None
        if user.check_password(password):
            return user
        return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

Я получил фрагмент кода от Фрагменты Джанго

Мои AUTHENTICATION_BACKENDS:

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.twitter.TwitterBackend',
    'social_auth.backends.facebook.FacebookBackend',
    'apps.members.backends.EmailBackend',
)

1 Ответ

0 голосов
/ 14 июня 2012

Я успешно использовал серверную часть аутентификации электронной почты с django-social-auth. Я не помню, чтобы я делал что-то особенное, чтобы это работало, поэтому это может быть что-то неочевидное, вот единственное отличие, которое я вижу в своем коде:

Мой бэкэнд электронной почты был определен первым в списке AUTHENTICATION_BACKENDS, что может иметь здесь некоторое значение.

Я не определил ни одного из supports_object_permissions supports_anonymous_user supports_inactive_user.

...