支持browserid身份验证的烧瓶

Flask-BrowserID的Python项目详细描述


#棕色烧瓶

提供与Mozilla的[browserid](身份验证系统)和Flask登录集成的Flask扩展。它公开了两条用于登录和注销的路由,以及一个javascript身份验证捆绑包,允许您快速创建登录和注销按钮。

安装

使用**pip安装**:

pip安装git+https://github.com/garbados/flask-browserid.git

快速启动

flask browserid要求首先配置flask登录的loginmanager并向应用程序注册,如下所示:

来自烧瓶进口烧瓶
从flask.ext.login导入loginmanager
从flask.ext.login导入browserid
从“我的东西”导入“按ID获取用户”按ID查找用户
from other_stuff import get_u user根据browserid响应查找用户

app=烧瓶(名称)

登录管理器=登录管理器()
登录管理器。用户加载程序(按ID获取用户)
登录管理器.init应用程序(应用程序)

浏览器id=browsserid()
浏览器ID.用户加载程序(获取用户)
浏览器ID.Init应用程序(应用程序)

现在路由`/api/login`和`/api/logout'已在应用程序中注册。javascript捆绑包“auth_script”也已添加到请求上下文的顶层,因此您可以在如下模板中访问它:

[注意:`auth_script`需要jquery和mozilla的`include.js`]

<;HTML>;
<;头>;
<;script type=“text/javascript”src=“https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js”>;<;/脚本>;
<;脚本src=“https://browserid.org/include.js”type=“text/javascript”>;<;/脚本>;
<;script type=“text/javascript”>;{{验证脚本{安全}}<;/脚本>;
<;头>;
<;正文>;
{%如果当前用户已通过身份验证()%}
<;按钮 id="browserid-logout">Logout</button>
{%else%}
<;按钮 id="browserid-login">Login</button>
{%endif%}
<;正文>;
<;/html>;

感谢“auth\u script”,单击该页上的“log in”按钮将尝试使用browserid登录。如果您已经登录,则单击“注销”将注销您。

所需配置

flask browserid需要一个函数,该函数接受browserid返回的数据,并使用该函数查找和返回用户,该用户随后使用flask登录名登录flask browserid。如果函数找不到用户,它可以尝试使用给定的数据创建用户。如果既找不到用户,也无法创建用户,则函数应返回none。如果成功,browserid返回的数据将如下所示:

{
“status”:“好”,
“电子邮件”:“lloyd@example.com”,
“观众”:“https://mysite.com”,
“到期”:1308859352261,
“发行人”:“browserid.org”
}

否则:

{
“status”:“失败”,
“原因”:“未提供证书”
}

browserid的响应在到达“user_loader”函数时已经从json解析为dict。

可选配置

通过在应用程序配置中设置以下内容,可以设置Flask Browserid用于登录和注销的URL:

*`browserid\u login\u url`:默认为`/api/login`
*`browserid\u logout\u url`:默认为`/api/logout`

有关如何配置应用程序的详细信息,请参阅[烧瓶配置处理](http://flask.pocoo.org/docs/config/)。

测试

运行“python setup.py test”将运行扩展的自动测试套件,但某些测试只能通过手动启动服务器并单击来运行(目前)。为此,从扩展的根目录,run python tests/初始化py-i。“-i”标志告诉测试套件跳过常规测试,而是使用测试模板运行测试应用程序,这样您就可以四处单击。

学分

非常感谢[flask mongoengine](我基于此扩展的结构)和[flask login](通常是一个非常好的扩展)。

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

推荐PyPI第三方库


热门话题
java如何在堆文件中找到局部变量   java如何使用旧的JSSessionID创建HttpSession?   arrays Java:Arraylist在处理文件时超出范围   可以将Java Retval放入数组中吗   java3d中的几何体碰撞检测?   java从listview和数据库中删除项   Java迭代两个列表,比较然后添加到另一个列表   java应用程序在提交分数排行榜Google Play时崩溃   java Eclipse+Maven Plugin+EGit Plugin=从GitHub签出特定的分支和标记?   Java中的半密码保护Zip文件   java JFrame组件能够通过重绘调用paintComponent,尽管使用flowlayout   带有比较器的Lambda表达式中的java Stream min()和max()方法只返回第一个和最后一个元素,不返回min/max元素   swing Java/Netbeans:JList。getModel()返回一个ListModel而不是DefaultListModel   java我如何使用应用程序。带有LiveData和ViewModel的片段   地理定位在Java中获取用户当前的纬度和经度   为什么在Java中将“this”用作方法参数时会收到此错误消息?   java将字符串转换为JSONArray(或任何数组)