【发布时间】:2014-12-15 22:53:36
【问题描述】:
我正在将 google 登录添加到我的 django 应用程序中,仅供在我的办公室使用。登录工作正常,但我正在尝试添加更好的错误页面。我在 /login/error 处写了一个登录错误页面,它提供了一些关于出错的信息,但我似乎无法让 django 在需要时显示该页面。
当 gmail 帐户不在我们公司帐户 (*@myoffice.com) 上或用户拒绝权限时,登录将失败。我希望它重定向到 /login/error 但重定向永远不会起作用。
我已经尝试添加
SOCIAL_AUTH_LOGIN_ERROR_URL = '/login/error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/login/error/'
到我的 settings.py 文件。两者都没有捕捉到我希望通过此页面处理的错误。我可以确认 /login/error 工作正常,问题只是获得正确的重定向。
任何帮助将不胜感激。
更新:这里有更多代码,因为这不像我希望的那样快速修复
来自settings.py(省略key和secret,更改了白名单的url)
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'thelibrary',
'home',
'social.apps.django_app.default',
)
AUTHENTICATION_BACKENDS = (
'social.backends.google.GoogleOAuth2',
'django.contrib.auth.backends.ModelBackend',
)
LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['example.com']
SOCIAL_AUTH_LOGIN_ERROR_URL = '/login/error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/login/error/'
来自我要求用户登录的模板
{% if user and not user.is_anonymous %}
Not yet implemented
{% else %}
Welcome guest!
<br />
Please <a href="{% url 'social:begin' 'google-oauth2' %}?next={{ request.path }}">Login with Google</a>
{% endif %}
这是我在请求失败时在控制台中得到的错误输出
[21/Oct/2014 13:44:42] "GET /login/google-oauth2/ HTTP/1.1" 302 0
[21/Oct/2014 13:44:51] "GET /complete/google-oauth2/?state=3YjuxWntctsrg6emGEPfMjzeeP4NSazX&code=4/lobir0Y2ZZnEPnJRE99gjqhjZh2RbwJC2wfCrs5Zy9A.Envfd1PM7OcaXmXvfARQvtiwnetlkgI HTTP/1.1" 500 157344
【问题讨论】:
-
您的问题可能是
python-social-auth正在捕获您的 URL/login/error/,就好像它是backendURL(如/login/google-oauth2/),因此它正在尝试使用 @987654329 登录@后端,显然不存在。尝试将 URL 格式更改为/login-error以查看是否有效。
标签: django google-oauth python-social-auth