小编Sha*_*eem的帖子

Django的Python Social Auth引发Authforbidden异常

我正在将Django 1.10与python 2.7和social-auth-app-django(1.2.0)一起使用。它是Python Social Auth库的一部分。

我希望仅将登录限制为我公司的域ID,因此我从库中使用了此设置。

SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS=['mycompany.in']
Run Code Online (Sandbox Code Playgroud)

现在,如果您尝试按预期使用任何其他域登录,则会引发错误。

我的目标是捕获此异常并向用户显示自定义页面。但是对于我的一生,我无法做到。

如果我将Debug设置为False,它将用户重定向到我的

LOGIN_ERROR_URL='/'
Run Code Online (Sandbox Code Playgroud)

页面,但无法将我的自定义消息传递给用户

这是我的setting.py的一部分

DEBUG = False

    MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'social_django.middleware.SocialAuthExceptionMiddleware',
]

#social auth
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY= "9******6.apps.googleusercontent.com"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET="W*****x"
SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS=['mycompany.in']
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'upload_file'
LOGOUT_URL = 'logout'
LOGIN_ERROR_URL='logout
Run Code Online (Sandbox Code Playgroud)

在我看来,我有这段代码可以处理异常

from social_django.middleware import SocialAuthExceptionMiddleware
from social_core.exceptions import AuthForbidden


    class SocialAuthExceptionMiddleware(SocialAuthExceptionMiddleware):
      def process_exception(self, request, exception):
        print "exception occured"
        if hasattr(social_exceptions, 'AuthForbidden'):
          print "hello two"
          return HttpResponse("I'm a exception %s" % exception)
        else:
          print "other exception"
          raise …
Run Code Online (Sandbox Code Playgroud)

python authentication django social google-login

5
推荐指数
1
解决办法
1726
查看次数

标签 统计

authentication ×1

django ×1

google-login ×1

python ×1

social ×1