一个功能强大、简单且异步的Sanic身份验证和授权库。

amyrose的Python项目详细描述


ContributorsForksStargazersIssues


艾米·罗斯

一个功能强大、简单、异步的Sanic身份验证和授权库。
View Demo · Report Bug · Request Feature

目录

关于项目

Amy Rose是一个简化的身份验证和授权库。专门设计用于Sanic。 amyrose提供了在大多数开源安全库中没有的特性,比如

  • 短信验证
  • 智威汤逊
  • 现成的数据库集成
  • 通配符权限
  • 角色权限

艾米·罗斯包含了你所有的基本安全需求。在

使用

构建

入门

为了开始,请安装pip。在

先决条件

  • 皮普
sudo apt-get install python3-pip

安装

  • 克隆回购
^{pr2}$
  • 安装pip包
pip3 install amyrose

使用

一旦艾米·罗斯一切就绪,一切就绪,实施起来就很容易了。在

初始设置

首先,您必须创建一个名为玫瑰.ini. 以下是其内容示例:

[ROSE]
secret=05jF8cSMAdjlXcXeS2ZJ

[TORTOISE]
username=admin
password=8KjLQtVKTCtItAi
endpoint=amyrose.cbwyreqgyzf6b.us-west-1.rds.amazonaws.com
schema=amyrose
models=['amyrose.core.models']
generate=true

[TWILIO]
from=+12058469963
token=1bcioi878ygO8fi766Fb34750e82a5ab
sid=AC6156Jg67OOYe75c26dgtoTICifIe51cbf

如果你自己初始化乌龟,你不必在这里配置它。在

如果不使用Twilio作为验证方法,则不必在这里配置它。在

配置好Amy Rose后,可以使用以下示例初始化Sanic:

if __name__ == '__main__':
    app.add_task(tortoise_init())
    app.run(host='0.0.0.0', port=8000, debug=True)

所有请求正文都应作为form-data发送

身份验证

  • 登记
KeyValue
usernametest
emailtest@test.com
phone+19876854892
passwordtestpass
@app.post('/register')asyncdefon_register(request):account,verification_session=awaitregister(request)awaittext_verification_code(account,verification_session)response=text('Registration successful')response.cookies[verification_session.cookie_name()]=verification_session.to_cookie()returnresponse
  • 验证
^{tb2}$
@app.post('/verify')asyncdefon_verify(request):account,verification_session=awaitverify_account(request)returntext('Verification successful')
  • 登录
KeyValue
emailtest@test.com
passwordtestpass
@app.post('/login')asyncdefon_login(request):account,authentication_session=awaitlogin(request)response=text('Login successful')response.cookies[authentication_session.cookie_name()]=authentication_session.to_cookie()returnresponse
  • 注销
@app.post('/logout')asyncdefon_logout(request):account,authentication_session=awaitlogout(request)response=text('Logout successful')returnresponse
  • 需要身份验证
@app.get("/get")@requires_authentication()asyncdefget_user_info(request):returntext('Sensitive user information')

授权

通配符权限的示例包括:

admin:add,update,delete
admin:add
admin:*
employee:add,delete
employee:delete
employee:*

一个名为Apache Shiro的库非常好地解释了这个概念。我 绝对推荐Java开发人员使用这个库。在

  • 需要权限
@app.get('/update')@requires_permission('admin:update')asyncdefon_test_perm(request):returntext('Admin has manipulated very sensitive data')
  • 需要角色
@app.get('/get')@requires_role('Admin')asyncdefon_test_role(request):returntext('Admin has retrieved very sensitive data')

路线图

与amyrose的Trello董事会保持联系,以获得提议的特性、已知问题和正在进行的开发的列表。在

贡献

贡献使开源社区成为一个值得学习、启发和创造的地方。您所做的任何贡献都将受到的高度赞赏。在

  1. 把项目分成两半
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交更改(git commit -m 'Add some AmazingFeature'
  4. 推到分支(git push origin feature/AmazingFeature
  5. 打开拉取请求

许可证

在GNU通用公共许可v3.0下发布。有关详细信息,请参见LICENSE。在

联系人

艾丹·斯图尔特

项目链接:https://github.com/sunset-developer/Amy-Rose

致谢

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

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官