使用Python Social Auth过滤或限制GoogleOauth2登录到Django中的一组用户

2024-06-06 19:48:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以通过域过滤掉它们,但如果我想用一些正则表达式来进一步过滤的话。我可以吗?我最近做了很多研究,我认为建立一个部分管道是解决问题的办法。但由于医生不好,我没能达到我的目标。 添加中间件也没有帮助,因为登录过程完全覆盖了我添加的功能。 我想做这样的事。在

在中间件.py在

class MyMiddleware(SocialAuthExceptionMiddleware):
    def process_exception(self, request, exception):
        if type(exception) == AuthForbidden:
            return render(request, "app/needlogin.html", {})

    def process_request(self,request):
        if request.user.is_authenticated():
            name = request.user.username.split('@')[0]
            roll=[]
            for i in name:
                if i.isdigit():
                    roll.append(i)
            if int(roll[1])<3:
                auth_logout(request)
                return render(request,"app/notlogin.html",{})
            # else:
                # return render(request, "app/needlogin.html",{})

问题是它处理每个请求,而不是具体的登录请求。也不管用。请指出我哪里出错了。在

感谢帮助!谢谢!在


Tags: 中间件nameselfappreturnifrequestdef
2条回答

为此,您需要一个管道函数,像这样简单的函数就可以做到:

from social.exceptions import AuthForbidden

def email_check(strategy, details, *args, **kwargs):
    if not is_valid_email(details.get(email)):
        raise AuthForbidden(strategy.backend)

然后将此函数粘贴到'social.pipeline.social_auth.auth_allowed',条目之后,如下所示:

^{pr2}$

是的。所以它是正常工作的。我没有测试正确的情况。在

相关问题 更多 >