简单的本地用户身份验证

miniauth的Python项目详细描述


https://travis-ci.org/farzadghanei/miniauth.svg?branch=master

miniauth是一个用于用户身份验证的小程序(和python库)。 具有方便的功能,使其易于在不同的上下文中使用,并与其他程序集成。

miniauth很简单,可移植,运行在python 2.7和python 3.4+版本上,并且 除了python标准库之外没有其他依赖项。

安装python包时,会提供miniauthcli entrypoint来管理和使用用户的本地数据库, 使用sqlite后端。

功能:

  • 密码是以salt和hash方式存储的。哈希是每个记录可配置的,默认值是安全选择(sha512)
  • 支持启用/禁用用户
  • 凭据可以用不同的方式指定:命令行参数、标准输入、文件
  • 当用作python库时,可以使用自定义存储,而不是默认的sqlite存储

下面是如何创建用户和密码,然后验证凭据:

$ miniauth save testuser
Password:

$ miniauth verify testuser
Password:
# exit codes report the result of verification

默认情况下,sqlite db文件是在名为miniauth.db的当前工作目录中创建的。 可以使用–storage选项配置此文件的路径。

验证凭据时,可以将密码指定为参数,或者 从标准输入或文件中读取。

$ miniauth --storage=user.db --verbose save testuser --password testpassword
No DB detected on "user.db". Creating latest DB schema ...
DB schema updated to version user.db on "1"
created user testuser

# read password from arguments
$ miniauth --storage=user.db --verbose verify testuser testpassword
user testuser credentials are correct

# read password from a file
$ cat file_with_password
testpassword
$ miniauth --storage=user.db --verbose verify testuser --password-file file_with_password
user testuser credentials are correct

# read username and password from a file
$ cat file_with_creds
testuser
testpassword
$ miniauth --storage=user.db --verbose verify --creds-file file_with_creds
user testuser credentials are correct

在其他python应用程序中,可以使用miniauth作为库对用户进行身份验证。

>>>fromminiauth.authimportMiniAuth>>>auth=MiniAuth('users.db')>>>auth.create_user('user','password')True>>>auth.verify_user('user','password')True>>>auth.verify_user('user','invalidpassword')False

miniauth可以使用默认的基于sqlite的存储后端以外的存储后端。 存储类应该继承抽象存储并实现抽象方法。

>>>fromminiauth.storageimportAbstractStorage>>>classCustomStorage(AbstractStorage):...# implement abstract methods...pass>>>auth=MiniAuth('',CustomStorage())

安装

$ pip install miniauth

或从源安装:

$ python setup.py install

开发

源代码位于GitHub

在开发/测试环境中pytestmock 需要,pycodestylemypy

# on dev/test env
$ pip install -r requirements/dev.txt

测试

Tox最方便用它运行测试,因为它处理虚拟机

$ tox

或者当安装了开发依赖项(最好是虚拟环境)时, 可以通过直接调用pytest来运行测试。

$ pytest

许可证

miniauth是根据mit许可条款发布的一个开源项目。

麻省理工学院许可证(MIT)

版权所有(c)2018-2019 Farzad Ghanei

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

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

推荐PyPI第三方库


热门话题
java我想访问同一类的不同函数中的函数变量   创建字段/值哈希映射的java反射   java Velocity工具向后兼容性?   cmd JAVA运行时错误:发生JNI错误   java spring引导示例hateoas不工作   java为什么Android Studio和gradle可以使用不同的类路径进行单元测试?   java Selenium Firefox驱动程序初始化   java如何在jar中重新定位gradle依赖项的包   java为什么我的单线程hello world应用程序使用22个OS线程?   正则表达式替换Java字符串中的特殊字符   在任何派生类的构造函数之后运行方法的java   java从输入字符串中找出日期   带有libGdx(Java)音乐的安卓studio可以在Android模拟器上工作,但不能在桌面上工作   java我在getconnection的参数方面有错误吗?   java使用JFileChooser访问选定文件   java如何将Json解析为另一个活动   java使用Resources for html和rest server   java更新列表,列表内容来自循环中的方法   java如何在GLSL中读取完整范围的32位整数纹理