【问题标题】:django-allauth socialaccount "full" logout?django-allauth 社交帐户“完全”注销?
【发布时间】:2017-07-21 13:59:20
【问题描述】:

我正在开发可能会成为某种信息亭应用程序的东西。我是 python 和 django 的新手,但它正在滚动。我的 allauth 注册流程使用社交登录(目前是 Google)或“本地”电子邮件地址和密码。

如果我使用 Google 帐户登录然后注销,我将被重定向到登录页面,很酷。问题是我还没有真的退出 Google 帐户。如果我单击社交登录链接,那么我将返回用户区域,无需密码挑战。

allauth 是否有办法注销并删除社交身份验证令牌?我是否需要自己捕捉注销信号并查找/删除令牌?

【问题讨论】:

    标签: django django-allauth


    【解决方案1】:

    看起来有一个built-in solution。有一个action 参数可以被赋予值“reauthenticate”。作为新手,我不肯定我已经以 python/django 方式添加了它,但我已经编辑了模板:

    myProject/templates/allauth/socialaccount/snippets/provider_list.html
    

    并将action=reauthenticate" 添加到社交身份验证 href 行中:

    {% load socialaccount %}
    
    {% get_providers as socialaccount_providers %}
    
    {% for provider in socialaccount_providers %}
    {% if provider.id == "openid" %}
    {% for brand in provider.get_brands %}
    <li>
      <a title="{{brand.name}}" 
         class="socialaccount_provider {{provider.id}} {{brand.id}}" 
         href="{% provider_login_url provider.id openid=brand.openid_url process=process action='reauthenticate' %}"
         >{{brand.name}}</a>
    </li>
    {% endfor %}
    {% endif %}
    <li>
      <a title="{{provider.name}}" class="socialaccount_provider {{provider.id}}" 
         href="{% provider_login_url provider.id process=process scope=scope auth_params=auth_params %}">{{provider.name}}</a>
    </li>
    {% endfor %}
    

    这似乎可以解决问题。

    【讨论】:

    • 来自文档 Aug2019:“您可以传递一个值为 reauthenticate 的操作参数,以指示您希望重新提示用户进行身份验证,即使他们之前已经登录。现在,这个仅受 Facebook、Google 和 Twitter 支持。”
    • 也来自文档:“您必须将 AUTH_PARAMS['access_type'] 设置为 offline 才能在首次登录和重新身份验证请求时接收刷新令牌。” django-allauth.readthedocs.io/en/latest/providers.html#google
    猜你喜欢
    • 2021-03-17
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2014-08-20
    • 2015-05-07
    • 2013-07-29
    • 1970-01-01
    • 2016-02-10
    相关资源
    最近更新 更多