flask 对于邮件url进行一个加密防止爆破
注册表单
from app.modles import User class registerForm(FlaskForm):
nicheng = StringField('昵称',validators=[DataRequired(message='填写昵称'),Length(3,20,message='长度不小于3 大于20')]) email = StringField('邮箱',validators=[DataRequired('填写邮箱'),Email(message='邮箱格式不正确')]) password = StringField('密码',validators=[DataRequired(message='填写密码'),Length(5,20,message='不能小于3大于20')]) password2 = StringField('重复密码', validators=[DataRequired(message='填写密码'), Length(5, 20)]) submit = SubmitField('提交') def validate_nicheng(self,field):
# 请求数据库模型User 看是否存在昵称,存在则跳出异常
user = User.query.filter_by(nicheng=field.data).first()
if user:
raise ValidationError('昵称已存在!') def validate_email(self,field):
user = User.query.filter_by(email=field.data).first()
if user:
raise ValidationError('邮箱已存在!')
先是默认的发送邮件
# 发送邮件
def send_email(recipients,html=None,body=None):
# 使用代理app flask自带的current_app 得到当前环境下的app
app = current_app._get_current_object() mes = Message(recipients=[recipients],subject='账号注册激活邮件',sender=app.config['MAIL_USERNAME'])
mes.body =body
mes.html = html t = Thread(target=mail_send,args=[app,mes])
t.start() def mail_send(app,mes):
with app.app_context():
mail.send(mes)
对邮件url进行加密
# 注册用户,表单验证之后经过用户提交 给一个页面发送信息让其激活邮件
@user.route('/register/',methods=['GET','POST'])
def register():
form = registerForm() # 重复验证密码 经过表单验证,所以不需要
if form .validate_on_submit(): # 默认是不将注册用户还未激活的信息保存到数据库中,这里是将用户注册信息做成一个字典使用一个加密算法混淆,防止爆破
token = get_token(form.nicheng.data,form.email.data,form.password.data) # 渲染的html页面
html = render_template('email_send.html',token=token) # 发送邮件 将注册人的邮件传入发送邮件的函数中
send_email(recipients=form.email.data,html=html)
return render_template('ing.html',name=form.nicheng.data,email=form.email.data) return render_template('register.html',form=form) # 接收邮件激活
@user.route('/confirm/')
def confirm():
token = request.args.get('token')
'''
这里有个坑点,在使用itsdangerous加密函数是会将增加 b' 和 最好一个字符 ' 在进行解密时发生错误
'''
check_token(token[2:-1]) # 注意切片
return render_template('email_register.html')
from itsdangerous import TimedJSONWebSignatureSerializer 是加密的函数
# 加密邮件注册的url 生成token
def get_token(nicheng,email,password):
s = serializer(current_app.config['SECRET_KEY'], expires_in=7200)
token = s.dumps({"nicheng":nicheng,
"email":email,
"password":password})
return token # 解密邮件链接的url 将token解密成为昵称密码邮箱
def check_token(token):
s = serializer(current_app.config['SECRET_KEY']) data = s.loads(token)
nicheng = data.get('nicheng')
email = data.get('email')
password = data.get('password') user = User()
user.nicheng = nicheng
user.email = email
user.password = password
db.session.add(user)
db.session.commit() return data # nicheng":nicheng,"email":email,"password":password
flask 对于邮件url进行一个加密防止爆破的更多相关文章
- python实现监控URL的一个值小于规定的值--邮件报警
监控URL的一个值小于规定的值--邮件报警 #!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'liudong' import urll ...
- Flask内置URL变量转换器
Flask内置URL变量转换器: 转换器通过特定的规则执行,”<转换器: 变量名>”.<int: year>把year的值转换为证书,因此我们可以在视图函数中直接对year变量 ...
- 1.flask视图和URL
1.第一个flask程序 from flask import Flask ''' Flask这个类是项目的核心,以后很多操作都是基于这个类的对象 注册URL等等,都是基于这个类 ''' app = F ...
- 有些其他程序设置为从 Outlook 下载并删除邮件。为防止发生此意外情况,我们将这些邮件放入一个特殊的 POP 文件夹中
最近使用FOXMAIL接收MSN邮件时,发现有一些邮件收取不到,进到WEB页面,页面下方提示“你的邮件位于 POP 文件夹中!有些其他程序设置为从 Outlook 下载并删除邮件.为防止发生此意外情况 ...
- EBS OAF 发展 URL商标、加密和编码
EBS OAF 发展 URL商标.加密和编码 (版权声明.我原来的或翻译的文章,如需转载,转载的个人学习,转载请注明出处:否则,请与我联系.版权所有) 马克 当您指定页面定义声明URL参数,文本也能够 ...
- SNF快速开发平台MVC-审核流,审核完成后会给下一个审核人发邮件,下一个审核人可以不登录系统,在邮件里进行审核处理
审核流设计和使用参考以下资料: 审核流设计 http://www.cnblogs.com/spring_wang/p/4874531.html 审核流实例 http://www.cnblogs.com ...
- ECS centos7 使用外部邮件服务商的465加密端口
ECS centos7 使用外部邮件服务商的465加密端口发送邮件. 1.修改/etc/mail.rc 文件中添加以下的 set smtp="smtps://smtp.163.com:465 ...
- [转]java利用AES实现URL的参数加密
原文地址:http://h5566h.iteye.com/blog/1465426 很多时候需要在URL传参,希望URL参数能够加密,这里我结合了文章http://www.2cto.com/kf/20 ...
- FastAdmin 的 url 有一个 ref=addtabs 是怎么添加的?
FastAdmin 的 url 有一个 ref=addtabs 是怎么添加的? 在使用 FastAdmin 时你会发现 url 中有一个 ref=addtabs . 以下是 Karson 的解释 这个 ...
随机推荐
- 分布式消息队列Apache Pulsar
Pulsar简介 Apache Pulsar是一个企业级的分布式消息系统,最初由Yahoo开发并在2016年开源,目前正在Apache基金会下孵化.Plusar已经在Yahoo的生产环境使用了三年多, ...
- 吴裕雄--天生自然python学习笔记:Matplotlib 基本绘图
使用 Matplotlib 组件绘图时,经常要与 Numpy 组件搭配使用 . 使用 Matplotlib 绘图首先要导入 Matplotlib 组件 , 由于大部分绘图功能是在 matplotlib ...
- Android下的鉴权实现方案
软件原理 不赘述,参考: 软件License认证方案的设计思路 License文件离线鉴权 机械指纹,不可逆的加密算法,如MD5 功能鉴权,可逆的不对称加密算法,服务端公钥加密,app端私钥解密,如R ...
- Telnet和SSH区别
首先,telnet和ssh都是连接远程计算机的连接协议,可以完成对完成计算机的控制,方便维护.其次,他们都是基于TCP/IP协议下的,所以连接时都需要知道目标机的网址或者域名,第三,他们都是与远程主机 ...
- PLL到底是个啥么东西呢?
——————————————————更新于20180826———————————————————————————— PLL:完成两个电信号的相位同步的自闭环控制系统叫锁相环.用电压控制延时,用到了VC ...
- Adam项目展示微软研究院人工智能领域新突破
编者按:在美国时间7月14日举行的2014年微软教育峰会上,Adam项目面对牵上台的3只小狗,一一准确地报出了它们的品种.Adam项目代表了微软研究院在机器学习和人工智能领域的前沿进展.它可不仅仅认得 ...
- Yii2创建管理员登录
1. 创建管理员表 进入项目根目录,在根目录执行命令: 1 $ ./yii migrate 2. 创建管理的控制器 1 $ cd console/controllers/ 编写代码如下: 123456 ...
- windows版 Sublime Text 2 快捷键
ucifr 翻译了 Sublime Text 2 快捷键 Mac版,用win系统的哥们表示伤不起啊~ 今天把windows版 Sublime Text 2 快捷键 整理了出来,与众兄弟们分享: Ctr ...
- Soulwail
XMLHttpRequest 属性解读 首先在 Chrome console 下创建一个 XMLHttpRequest 实例对象 xhr.如下所示: inherit 试运行一下代码. var xhr ...
- iOS 客户端与服务端做时间同步
需求 我们做客户端的时候,有时会需要对客户端与服务器的时间进行同步,比如抢购活动.倒计时等.这时我们要考虑如何准备地与服务器的时间进行同步,同时防止用户本地的时间有误差时导致的问题. 分析 描述 为了 ...