【问题标题】:Zero Footprint Python-Social-Auth authentication零足迹 Python-Social-Auth 身份验证
【发布时间】:2014-06-11 15:57:01
【问题描述】:

我的网站有使用 django 默认用户模型的常规用户,但对于一项特定功能,我希望人们能够使用他们的社交帐户(twitter、fb..etc)使用 python-social-auth 登录,而无需这些登录与用户模型一起保存在数据库中(未创建帐户,无法执行某些正常的用户任务)并且会话超时。

我四处寻找方法来做到这一点,但我的小研究没有结果。有什么想法吗?

总结:

  1. 普通用户和社交用户之间的分离(这样我就可以限制社交身份验证用户可以执行的操作)
  2. 社交身份验证用户的会话超时
  3. 用户表中没有添加社交身份验证用户(无足迹)。
  4. 可选:获取他们的社交用户名和 ID 以用于日志记录。

谢谢

【问题讨论】:

    标签: python django oauth oauth-2.0 python-social-auth


    【解决方案1】:

    您可以通过添加设置SOCIAL_AUTH_USER_MODELpython-social-auth 添加自定义用户模型来区分社交用户。在http://psa.matiasaguirre.net/docs/configuration/settings.html#user-model查看设置文档

    【讨论】:

    • 我试过了,但是在运行 syncdb 时它抛出了错误:CommandError:一个或多个模型没有验证:auth.user:m2m 字段“组”的访问器与相关的 m2m 字段“Group.user_set”发生冲突'。将related_name 参数添加到“组”的定义中。 auth.user:m2m 字段“user_permissions”的访问器与相关的 m2m 字段“Permission.user_set”发生冲突。将related_name 参数添加到“user_permissions”的定义中。 main.voter:m2m 字段“组”的访问器与相关的 m2m 字段“Group.user_set”发生冲突。在“组”的定义中添加一个 related_name 参数。
    • 这看起来像是您自定义模型定义中的问题,您的模型类中的一些字段与 django 内置用户模型中的相关名称,您的模型是如何定义的?
    • 我试过了:class Voter(User): pass and class Voter(AbstractUser): pass
    • 那么你是继承了与django内置用户模型冲突的字段,django用户系统不会被认为在一个应用程序中同时有多个用户模型。你需要一个完全不相关的用户模型。
    【解决方案2】:

    我会尝试使用django.contrib.auth.models.Groupdjango.contrib.auth.models.Permission 来解决这个问题。创建一个对您的应用功能具有自定义权限的通用组,并将所有普通用户添加到该组。

    python-social-auth 创建的帐户保存为默认django.contrib.auth.models.User,但在没有任何权限的情况下创建单独的组。

    如有必要,创建一些计划任务(使用 cronjob 或 Celery ),这些任务将通过用户并停用/删除过期的用户。

    【讨论】:

      猜你喜欢
      • 2016-10-16
      • 2016-06-05
      • 2015-10-28
      • 2017-07-15
      • 1970-01-01
      • 2017-06-05
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多