- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道已经有一些关于该主题的问题,但我已尝试实现这些解决方案,但无法真正解决我的问题。
我在这里谈论的是 allauth 的社交注册,尤其是 facebook。
期望的行为:在 facebook 注册后,我希望用户转到我的 url“accounts:welcome”,但是当他们只是登录时,我希望他们转到我的 LOGIN_REDIRECT_URL(这是网站的主页)。在这里和那里查看之后,这是我想出的代码(编写我的自定义适配器)
设置.py:
LOGIN_REDIRECT_URL = ("gamestream:home")
SOCIALACCOUNT_ADAPTER = "myproject.users.adapter.MySocialAccountAdapter"
适配器.py:
from django.conf import settings
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
class MySocialAccountAdapter(DefaultSocialAccountAdapter):
def save_user(self, request, sociallogin, form=None):
print('OK11OK')
super().save_user(request, sociallogin, form=form)
return redirect(reverse('accounts:welcome'))
def get_connect_redirect_url(self, request, socialaccount):
print('OK22OK')
assert is_authenticated(request.user)
url = reverse('accounts:welcome')
return url
请假设所有链接/设置都很好,例如,当我通过 Facebook 应用程序将自己创建为用户时,控制台打印出“OK11OK”。事实上,方法 get_connect_redirect_url 永远不会被触发,因为我从未在控制台上读取过“OK22OK”。用户已创建,我最终进入主页,这不是我想要的。
所以我认为在 save_user 方法之后会调用其他东西,因为我可以告诉我我通过了 accounts:welcome,但最终出现在主页上。我可以这样说,因为如果我在 save_user 方法中返回不正确的 url,我会在该行收到特定于该 url 的错误。
那么,这里出了什么问题?我想我可能覆盖了错误的方法,但我已经阅读了基础 SocialAccountAdapter 的所有代码,但我看不到任何其他正确的选择。
只是想提一下,因为我对普通帐户注册(非社交帐户)有更多控制权,所以我已经实现了我想要的。有什么想法吗?
非常感谢!
最佳答案
我也遇到了同样的问题,我找到了两种方法:
方法一
Django 不使用 DefaultSocialAccountAdapter 的重定向功能,您必须重写 DefaultAccountAdapter 的 get_signup_redirect_url 函数才能达到此结果。
首先你需要改变settings.py中的默认适配器:
ACCOUNT_ADAPTER = 'users.adapter.MyAccountAdapter'
然后,只需用您的网址覆盖 get_signup_redirect_url 即可:
# project/users/adapter.py
from allauth.account.adapter import DefaultAccountAdapter
class MyAccountAdapter(DefaultAccountAdapter):
def get_signup_redirect_url(self, request):
return resolve_url('/your/url/')
方法二
这个比较简单
如果您查看 DefaultAccountAdapter 的源代码,它会说:
Returns the default URL to redirect to after logging in. Notethat URLs passed explicitly (e.g. by passing along a
next
GET parameter) take precedence over the value returned here.
因此,您可以在登录模板中传递下一个参数来强制重定向。以下是使用 Google 社交登录的示例:
{% load socialaccount %}
{% providers_media_js %}
{# your html tags #}
<body>
<a href="{% provider_login_url "google" next=/success/url/ %}">SOCIAL LOGIN </a>
</body>
当然,您可以根据需要个性化下一个 url(我指的是/success/url/)。您可以传递一个包含您想要的 url 的上下文变量,并将其放置在那里,而不是那个硬编码的 url。
关于Facebook 社交注册后 Django Allauth 非常具体的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800453/
我正在尝试使用谷歌浏览器的 Trace Event Profiling Tool分析我正在运行的 Node.js 应用程序。选择点样本后,我可以在三种 View 之间进行选择: 自上而下(树) 自上而
对于一个可能是菜鸟的问题,我们深表歉意,但尽管在 SO 上研究了大量教程和其他问题,但仍找不到答案。 我想做的很简单:显示一个包含大量数据库存储字符串的 Android ListView。我所说的“很
我已经开始了一个新元素的工作,并决定给 Foundation 5 一个 bash,看看它是什么样的。在创建带有水平字段的表单时,我在文档中注意到的第一件事是它们使用大量 div 来设置样式。所以我在下
我有一个 Windows 窗体用户控件,其中包含一个使用 BeginInvoke 委托(delegate)调用从单独线程更新的第 3 方图像显示控件。 在繁重的 CPU 负载下,UI 会锁定。当我附加
我有一堆严重依赖dom元素的JS代码。我目前使用的测试解决方案依赖于 Selenium ,但 AFAIK 无法正确评估 js 错误(addScript 错误不会导致您的测试失败,而 getEval 会
我正在制作一款基于滚动 2D map /图 block 的游戏。每个图 block (存储为图 block [21][11] - 每个 map 总共 231 个图 block )最多可以包含 21 个
考虑到以下情况,我是前端初学者: 某个 HTML 页面应该包含一个沉重的图像(例如 - 动画 gif),但我不想强制客户缓慢地等待它完全下载才能享受一个漂亮的页面,而是我更愿意给他看一个轻量级图像(例
我正在设计一个小软件,其中包括: 在互联网上获取资源, 一些用户交互(资源的快速编辑), 一些处理。 我想使用许多资源(它们都列在列表中)来这样做。每个都独立于其他。由于编辑部分很累,我想让用户(可能
我想比较两个理论场景。为了问题的目的,我简化了案例。但基本上它是您典型的生产者消费者场景。 (我关注的是消费者)。 我有一个很大的Queue dataQueue我必须将其传输给多个客户端。 那么让我们
我有一个二元分类问题,标签 0 和 1(少数)存在巨大不平衡。由于测试集带有标签 1 的行太少,因此我将训练测试设置为至少 70-30 或 60-40,因此仍然有重要的观察结果。由于我没有过多地衡量准
我是一名优秀的程序员,十分优秀!