支持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第三方库


热门话题
JavaHibernate:如何使用第三个表将属性与条件连接起来   java JMS/REST客户端是作为一个集中的库,还是每个微服务一个?   java在Netbeans中生成重复代码   java处理无法映射到SOA中一个frontendpage的错误   java EditText getText不在按钮中工作单击   java您能阻止WatchService在Windows上锁定文件吗?   java在Hadoop中使用wget?   无活动数据库连接的java部署JEE/JPA应用程序   平台模块应用程序中netbeans缺少java库(netbeans 7.3.1)   java在屏幕上分布一个数据网格,它的所有项目都是可见的   在java中获得约会   if语句是Java中计算最小数的标准方法   在openGL中找不到用于纹理创建的java文件路径   java如何在firebase中运行查询以检索具有当前日期的对象?   java如何更快地加载(库)滑动图像?安卓   java将变量传递给另一个类是否使用同一个类?   在Java中,biginteger尾部递归函数仍在破坏堆栈   java蓝图服务列表:等待所有服务