【问题标题】:Prevent social account creation in allauth防止创建社交帐户
【发布时间】:2012-11-18 18:25:13
【问题描述】:

是否可以在某些情况下阻止帐户创建,最好使用 pre_social_login 信号?

【问题讨论】:

    标签: django django-authentication django-allauth


    【解决方案1】:

    使用当前的开发分支,您可以轻松做到这一点。在您的设置中:

    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 上的文档说明

    【讨论】:

    • 但这会改变所有社交提供者的适配器,我可以为 MySocialProvider 使用类似MY_SOCIAL_ SOCIALACCOUNT_ADAPTER 的设置吗?
    • 您可以检查sociallogin.account.provider,并根据提供者的类型有选择地引发异常。
    • 当我有很多供应商要分清处理时会很麻烦。我认为单独配置它们会更整洁。
    猜你喜欢
    • 2016-11-16
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2015-04-05
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多