向Web服务添加动态密码身份验证

dynamic_password的Python项目详细描述


注意!只适用于像我这样的偏执狂。

项目代码和BugTracker托管在 BitbucketGithub

简介

django动态密码是一个django应用程序,允许您添加 Web服务的动态密码身份验证。

它是怎么工作的?

根据您的 settings.py。您还可以仅为员工用户启用此功能,请参见下文。

您可以根据以下内容格式化动态密码模式的值: http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior

一些例子。假设今天是2022年9月29日,8:01(09-29-2022 8:01)。假设您的用户名是“admin”,密码是“s3kr3t”,根据settings.py中的动态密码模式,您将拥有:

案例1:

DYNAMIC_PASSWORD_PATTERN = '<PASSWORD>%d'
only today valid password: s3kr3t29

案例2:

DYNAMIC_PASSWORD_PATTERN = '%d<PASSWORD>%H'
only this hour valid password: 29s3kr3t08

案例3:

DYNAMIC_PASSWORD_PATTERN = '%d<PASSWORD>%H-%M'
only this minute valid password: 29s3kr3t08-01

安装

有几种不同的方法可以安装动态密码:

使用pip

如果您的系统上有pip安装,只需键入:

pip install django-dynamic-password

如果您已经有一个旧版本的动态密码,并且想要升级, 使用:

pip install -U django-dynamic-password

从目录安装

如果您使用Mercurial或 可下载的档案,你需要安装拷贝你有整个系统。 尝试运行:

python setup.py develop

如果失败,您就没有安装setuptools或等效的; 安装或运行:

python setup.py install

如何配置动态密码?

如果您已经安装了动态密码应用程序,则必须继续 项目的配置。

将动态密码添加到已安装的应用程序

一旦动态密码在python路径中,您需要修改已安装的应用程序设置,以包括动态密码模块:

INSTALLED_APPS = (
    # ...,
    # Third-party
    'dynamic_password',
    # ...,
    )

启用自定义身份验证后端

要激活此后端,至少需要放置dynamic_password.backends。 dynamicpasswordbackend行到身份验证后端元组:

AUTHENTICATION_BACKENDS = (
‘dynamic_password.backends.DynamicPasswordBackend’, )

在设置中设置动态密码模式。py

将此行添加到您的设置中。py:

DYNAMIC_PASSWORD_PATTERN = ‘<PASSWORD>%m’

根据你的需要改变它的价值。 一些示例:

DYNAMIC_PASSWORD_PATTERN = '<PASSWORD>%d'
DYNAMIC_PASSWORD_PATTERN = '<PASSWORD>%m'
DYNAMIC_PASSWORD_PATTERN = '%m<PASSWORD>%d'
DYNAMIC_PASSWORD_PATTERN = '%d<PASSWORD>%Y'

您可以根据http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior

可选:设置动态密码仅限员工

为了只为员工用户启用动态密码,您可以添加 设置行。py:

DYNAMIC_PASSWORD_ONLY_STAFF = True

未来发展计划

  • 启用“每用户”动态密码,动态密码用户=('user1','user2',)

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

推荐PyPI第三方库


热门话题
java如何使用随机构造函数比较两个对象   java Hibernate如何从另一个web应用程序项目读取配置?   java如何在查询中使用HQL检查对是否存在?   java如何在Android中读取联系人的生日?   具有“IPv4”的类的java Camel案例名称   封装集合的java模拟对象   java原生接口(JNI)是否受C++ ABI兼容性问题的影响?   java请求。getSession()始终返回新会话id,尽管使用URL重写   Swift iOS应用程序和Java程序之间的SSLSockets   java isGooglePlayServicesAvailable nullPointerException   数据库Java dbUnit CRUD测试错误   堆栈溢出每当我运行AVLTree时都会得到一个StackOverflowerError。java代码   java如何设计具有多个DTO的DB表   java Webflux Webclient增加我的Webclient超时时间(等待bi或一个不稳定的服务)   使用tOracleOutput时未捕获java Talend BatchUpdateException   用Java处理图形数据   java错误401使用Oauth2从谷歌请求访问令牌   java Printf Enotation   War文件的javagradle风格