用于pgcrypto编码密码的django哈希器。

django-pgcryptoauth的Python项目详细描述


用于PostgreSQL PGCrypto编码密码的Django哈希器。

https://travis-ci.org/tomatohater/django-pgcryptoauth.png?branch=masterhttps://coveralls.io/repos/tomatohater/django-pgcryptoauth/badge.png?branch=masterhttps://badge.fury.io/py/django-pgcryptoauth.png

django-pgcryptoauth是一个自定义django密码散列器,用于为使用postgres pgcrypto扩展加密的旧密码提供身份验证连续性。

因为我们没有访问明文密码的权限,所以我们只是让django理解并处理遗留算法。当用户成功登录时,django会自动将密码升级到首选算法。

依赖关系

当然,您需要使用安装了pgcrypto扩展名的postgresql数据库。

安装

  1. 安装django-pgcryptoauth包:

    pip install django-pgcryptoauth
    
  2. pgcryptoauth添加到INSTALLED_APPS

    INSTALLED_APPS = (
        ...
        'pgcryptoauth',
        ...
    )
    
  3. 在django设置中将pgcryptoauth.hashers.PgCryptoPasswordHasher添加到PASSWORD_HASHERS

    PASSWORD_HASHERS = (
        ...
        'pgcryptoauth.hashers.PgCryptoPasswordHasher',
    )
    

注意:这个散列可能应该在列表的底部,以便其他散列优先。见https://docs.djangoproject.com/en/dev/topics/auth/passwords/

配置

默认情况下,pgcryptoauth将使用默认的数据库连接。但是,您可以通过将pgcryptoauth_数据库设置为django设置中的其他内容来指示它使用另一个连接。

PGCRYPTOAUTH_DATABASE = 'another_database'

当然,这个其他连接必须是一个有效的postgres数据库,具有pgcrypto扩展名,并在数据库设置中列出:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'my_database',
        'USER': 'my_user',
        'PASSWORD': 'my_pass',
        'HOST': '127.0.0.1',
        'PORT': '',
    },
    'another_database': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'another_database',
        'USER': 'another_user',
        'PASSWORD': 'another_pass',
        'HOST': '127.0.0.1',
        'PORT': '',
    }
}

如果主数据库上未安装(或无法安装)pgcrypto扩展,则可能需要执行此操作。尤其是如果你的主数据库不是postgresql!

运行测试用例

执行单元测试:

python manage.py test pgcryptoauth

加载旧数据

注意:传统的pgcrypto散列密码看起来像$1$BFw5nhna$XeiE8c4FInYGp3oND2l9n1。当迁移这些密码时,我们只需要在散列前面加上pgcrypto$算法:

user.password = 'pgcrypto$$1$BFw5nhna$XeiE8c4FInYGp3oND2l9n1'
user.save()

如果您通过djangoauth.useradmin查看用户密码,您应该看到:

algorithm: pgcrypto
hash: $1$BFw******************************************

历史记录

v0.3-增加了python 3支持,支持django 1.8+。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用NTLM在自定义web服务器应用程序上支持SSO?   java在SaveInstanceState上保存和恢复ArrayQue   java从IO迁移到NIO网络,非法阻塞模式异常   Hibernate对象模型设计中的java多对多关系   java如何执行HelloWorld脚本   java Swing数据绑定框架   C++在高级文本3编译后的CMD上输出java程序   java是否在类图中包含JavaScript和HTML文件?   java将具有多个关系的属性映射到另一个类的属性   java Objectify和TimerTask:没有为此线程注册API环境   HibernatePersistence提供程序中出现java错误   java如何检查IP是否可访问,代码名为one   java如何加载和使用一个或多个。类文件?