电子邮件auth后端打破django-social-auth

时间:2012-02-02 05:33:04

标签: django authentication django-socialauth

我最近添加了一个额外的身份验证后端,允许用户使用他们的电子邮件地址或用户名登录,但它似乎打破了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

我从Django snippets

获取了代码段

我的AUTHENTICATION_BACKENDS:

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

1 个答案:

答案 0 :(得分:0)

我已成功使用django-social-auth的电子邮件身份验证后端。我不记得曾经做过任何特别工作,所以它可能是不明显的,这是我能用代码看到的唯一差异:

我的AUTHENTICATION_BACKENDS列表中首先定义了我的电子邮件后端,这可能在这里有一定的重要性。

我没有定义任何supports_object_permissions supports_anonymous_user supports_inactive_user