如何在Django allauth中禁用中间签出页面

如何在Django allauth中禁用中间签出页面,django,django-views,django-allauth,Django,Django Views,Django Allauth,如何从django allauth禁用中间签出页面。当用户点击我网站上的注销链接时,我希望他立即注销,我希望删除这个中间页面 在设置中将“获取”时的帐户注销设置为True 另请参见2018年12月更新的 使用GET请求可能是个坏主意,因为浏览器会从URL栏预取URL。Chrome(截至目前)在这方面相当糟糕;它将发送一个GET请求到它认为在URL栏中键入时您会点击enter的页面 另外,人们可以添加一个链接,如,您将被注销。这不是一个安全风险,因为它会让你注销,但它肯定会让你的用户感到恼火 相反

如何从django allauth禁用中间签出页面。当用户点击我网站上的注销链接时,我希望他立即注销,我希望删除这个中间页面

在设置中将“获取”时的
帐户注销设置为
True


另请参见2018年12月更新的

使用GET请求可能是个坏主意,因为浏览器会从URL栏预取URL。Chrome(截至目前)在这方面相当糟糕;它将发送一个
GET
请求到它认为在URL栏中键入时您会点击
enter
的页面

另外,人们可以添加一个链接,如
,您将被注销。这不是一个安全风险,因为它会让你注销,但它肯定会让你的用户感到恼火

相反,您应该考虑使用带有CSRF的表单使用<代码> POST <代码>请求。Django Allauth已经有了这个。以下是中间签出页面中的

<form method="post" action="{% url 'account_logout' %}">
  {% csrf_token %}
  {% if redirect_field_value %}
    <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
  {% endif %}
  <button class="STYLE_ME" type="submit">Logout</button>
</form>

^上述设置将满足您的需要。有关Django Allauth的进一步设置,请查看其配置页面,网址为

,如果您不想用类似的东西来设计表单按钮的样式,这里有另一个保存POST请求的快捷方式:

隐藏表单:

<form style='display: none;' method="post" action="{% url 'account_logout' %}">
  {% csrf_token %}
  <input type="hidden" name="next" value="/redirect_target/"/>
  <button id="signOutBtn" type="submit">Logout</button>
</form>

这不应该在
GET
上完成,因为任何人都可以
让您在不知情的情况下注销。在不知不觉中注销有什么不对?如果有什么区别的话,那应该是一个特性,而不是bug=)Kalob和Adam的答案更有用。就连allauth doc都说:“GET并不是为了修改服务器状态而设计的,在这种情况下,它可能是危险的。”用一篇博文就可以很容易地做到这一点。
<form style='display: none;' method="post" action="{% url 'account_logout' %}">
  {% csrf_token %}
  <input type="hidden" name="next" value="/redirect_target/"/>
  <button id="signOutBtn" type="submit">Logout</button>
</form>
$(document).on('click', '#signOutLink', function() {
    $('#signOutBtn').click()
});