【发布时间】:2017-11-11 16:31:50
【问题描述】:
我将 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']
现在,如果您尝试按预期使用任何其他域登录,则会引发错误。
我的目标是捕获此异常并向用户显示自定义页面。但我这辈子做不到。
如果我将 Debug 设置为 False,它会将用户重定向到我的
LOGIN_ERROR_URL='/'
页面但无法将我的自定义消息传递给用户
这是我设置的一部分。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
在我看来,我有这段代码来处理异常
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 exception
我什至尝试过
def process_template_response(self):
print "response"'
def get_redirect_uri(request, exception):
print "URL"
但无济于事。
我已经关注了这些链接 python-social-auth AuthCanceled exception
和
这是调试设置为 False 时的输出:
“AuthForbidden 在 /app/oauth/complete/google-oauth2/ 不允许使用您的凭据”
【问题讨论】:
标签: python django authentication social google-login