【问题标题】:Creating user in django with same password in multiple domains在多个域中使用相同密码在 django 中创建用户
【发布时间】:2016-07-16 13:09:43
【问题描述】:

我有两个不同的域,例如 abc.com 和 xyz.com 两个站点都使用 django 框架及其身份验证系统,我想创建一个与 xyz.com 中密码相同的用户,以便用户可以使用登录abc.com 的相同凭据。

另一种方法是使用与 xyz.com 中相同的哈希密码创建用户,但两个域在不同版本的 django 上运行(我已经在 django 版本 1.6.3 和 1.7.2 中测试了该方法)。我有以下问题:

  • 使用上述方法有什么后果(未来的问题)?
  • 如果用户数据库不是集中式的,是否还有其他更好的替代/方法来创建集中式身份验证系统。

我也不想添加自定义密码字段,或存储在用户的会话中或从我端管理密码。

【问题讨论】:

  • 不是 django 特定的 stackoverflow.com/questions/4306728/…
  • 我回答了你的第二个问题(或至少尝试过)。我不确定您自己建议的解决方案是什么,因此对您的方法的后果和未来问题发表评论需要进一步阐述。
  • 我在 abc.cmo 上做了一个 api,它接受来自 xyz.com 的用户名和散列密码并创建用户。我发现如果我用散列密码替换密码字段,尽管他们的 django 版本不同,但同一用户能够登录 xyz.com。另外我发现 django 使用设置文件中的 SECRET_KEY 生成散列。所以可能是散列生成算法或密钥本身可能会在未来的版本中发生变化。

标签: python django authentication django-authentication


【解决方案1】:

关于集中式身份验证:您可以将数据库仅用于 User 模型。支持多个数据库已有一段时间了,您可以阅读它here

每个域都会有一个会话cookie,它们会异步超时,但会使用相同的密码和用户名进行身份验证。

【讨论】:

    【解决方案2】:

    你应该做集中式数据库。如果你不想这样做。您已在两个项目中设置了两个数据库,并为 django 用户创建了另一个数据库。

    设置如下:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.xxx',
            'NAME': 'djangoUserDB',                 
            'USER': 'root',                    
            'PASSWORD': '',                
            'HOST': 'abc or xyz', # you should put this in one domain. abc or xyz               
            'PORT': '',
        },
    
        'abc': {
            'ENGINE': 'django.db.backends.xxx',
            'NAME': 'abcDB',                 
            'USER': 'root',                    
            'PASSWORD': '',                
            'HOST': 'abc', 
            'PORT': '',
        },
    
       'xyz': {
            'ENGINE': 'django.db.backends.xxx',
            'NAME': 'abcDB',                 
            'USER': 'root',                    
            'PASSWORD': '',                
            'HOST': 'xyz',         'PORT': '',
         },
    }
    

    您应该只使用一个数据库进行用户管理。

    我认为不会有任何问题发生。

    希望!它会帮助你。 :)

    【讨论】:

    • 这就是我的建议
    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2017-11-18
    相关资源
    最近更新 更多