wtforms的一次性密码
WTF-OT的Python项目详细描述
wt表单的一次性密码字段
这是什么?
这个模块有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 code和example code。
许可证(麻省理工学院许可证)
麻省理工学院执照(MIT) 版权所有(c)2016-Hiroaki Yamamoto
兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:
上述版权公告及本许可公告须包括在 软件的拷贝或大部分。
本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。