wtforms的一次性密码

WTF-OT的Python项目详细描述


wt表单的一次性密码字段

Build StatusMaintainabilityTest Coverage

这是什么?

这个模块有google的2 factor authentication fields用于WT-Forms

功能

  • 单页应用程序驱动的密钥生成。
  • qrcode生成
  • 基于[wtforms]的机密字段和身份验证程序

如何使用

如果您想要二维码:

首先,编写表单以生成密钥并对其进行身份验证:

form.py

#!/usr/bin/env python# coding=utf-8fromflask_wtfimportFormimportwtforms.fieldsasfldimportwtforms.fields.html5asfld5importwtforms.validatorsasvldfromwtf_otpimportOTPSecretKeyField,OTPCheckclassUserInfoForm(Form):name=fld.StringField()email=fld5.EmailField(validators=[vld.InputRequired(),vld.Email()])password=fld.PasswordField()new_password=fld.PasswordField()confirm_password=fld.PasswordField(validators=[vld.EqualTo("new_password")])secret=OTPSecretKeyField(qrcode_url="/qrcode",validators=[vld.InputRequired()])classLoginForm(Form):email=fld5.EmailField(validators=[vld.InputRequired(),vld.Email()])passwrd=fld.PasswordField(validators=[vld.InputRequired()])auth=fld.IntegerField(validators=[validators=[vld.InputRequired(),OTPCheck()]])

接下来,像往常一样编写应用程序。但是,您希望添加一个新的路由 路径是生成qrcode的“/qrcode”。第四,足够的 提供功能。OTPSecretKeyField的实例提供qrcode 功能:

from.formimportUserInfoForm# /qrcode is assigned to generate_qrcode.defgenerate_qrcode(req,res):form=UserInfoForm()secret=req.args.get("secret")ifnotsecret:abort(404)res.make_response(form.secret.qrcode(secret,name="Test Example",issuer_name="Test Corp"))resp.mimetype="image/svg+xml"

注意,不能通过UserInfoForm.secret获取实例,因为 UserInfoForm.secret返回UnboundField的实例。

如果不需要qrcode

如果不需要qrcode,只需从相应的 类并移除qrcode生成类。

更多细节

如果你想了解更多细节,请参考source codeexample code

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

麻省理工学院执照(MIT) 版权所有(c)2016-Hiroaki Yamamoto

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

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

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

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

推荐PyPI第三方库


热门话题
javascript解析引导Datepicker时间戳到Joda DateTime   java验证使用Mockito按精确顺序调用的模拟方法。有序   Eclipse正在抛出错误Java已启动,但返回退出代码=805306369   swing Java无法让TempListener工作   java检查特殊字符和空格   从数据库中删除的java无消息对话框   java将ArrayList转换为HashMap<String,String>   spring线程安全与@Scheduled和@Async,Java   未找到java文本文件引发异常   java为什么BigInteger将“80”(十六进制)解析为两个字节?   Java客户端服务器socket错误:Java。网BindException:地址已在使用中:bind   Java类:更改方法参数的最有效方法   java如何在局域网上连接客户端和服务器?   带下划线的java Spring数据rest排序字段   java为什么我的方法只返回ArrayList中存在的一个副本?