防止在allauth中创建社交账户

6
在所有auth中,是否可以在某些情况下防止帐户创建,最好使用pre_social_login信号?
1个回答

10

使用当前的开发分支,您可以轻松完成此操作。在您的设置中:

SOCIALACCOUNT_ADAPTER = 'my.adapter.MySocialAccountAdapter'

然后使用该 adapter.py 文件:

from django.http import HttpResponse

from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from allauth.exceptions import ImmediateHttpResponse

class MySocialAccountAdapter(DefaultSocialAccountAdapter):
    def pre_social_login(self, request, sociallogin):
        raise ImmediateHttpResponse(HttpResponse('Closed for the day'))

或者,从您的pre_social_login信号引发类似的异常(尽管我不喜欢这种方法--请参阅https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/adapter.py#L15文档注释)。


但这将会改变所有社交提供者的适配器,我能否为我的社交提供者使用诸如MY_SOCIAL_ SOCIALACCOUNT_ADAPTER的设置? - Kane Blueriver
您可以检查 sociallogin.account.provider,并根据提供程序的类型有选择性地引发异常。 - pennersr
当我需要单独处理很多供应商时,这将会很麻烦。我认为单独配置它们会更整洁。 - Kane Blueriver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接