Flask框架登录日志模块编写
web扫描器网站的框架搭建逐渐进入尾声,边搭建框架的时候负责前端的小姐姐也在完善页面设计,过两天就可以进行功能点的完善了。
在扫描器中我们用到了用户登录模块,想法是初始化一个账户和密码,比如说admin : 123456这种,用户第一次登陆之后修改密码即可,需要使用扫描器的话自己在服务器上搭建即可,或者是多人使用同一个账号,避免有人利用注册模块白嫖扫描器,当然也可以添加邀请码注册的功能,不过暂时没有这个想法。
作为web管理员登录之后,应该有一个模块是查看登录日志,可以看是否有尝试暴力破解登录的情况出现,这篇博文的目的也是使用Flask框架编写登录日志模块
登录的日志模型暂定为:ip,email,password,date 四个数据,分别用来储存登录者的IP地址,登录邮箱,密码,和登录时间,管理员也可以通过查看日志快速发现网站的异常情况
首先在 models.py里面创建log日志类
class Log(db.Model):
__tablename__='log'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
ip=db.Column(db.String(20),nullable=False)
email=db.Column(db.String(50),nullable=False)
password=db.Column(db.String(100),nullable=False)
date=db.Column(db.DateTime,default=datetime.now)
date使用default=datetime.now获取用户登录的时间,需要导入包
from datetime import datetime
接着在index.py里面编写save_log函数
def save_log(ip,email,password):
log = Log(ip=ip,email=email, password=password)
db.session.add(log)
db.session.commit()
我们只需要传入ip,email,和password即可,因为我这里是使用邮箱登录,如果你是使用用户名的话需要将email修改为username,当然在models里面也要修改
接着我们在用户登录的地方放入save_log函数就可以了,在其登录的时候将参数传给save_log函数
另外还有如何取到用户IP的问题,使用request里面的方法:
ip = request.remote_addr
调用save_log函数在login函数里
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
email=request.form.get('email')
password=request.form.get('password')
remeber=request.form.get('remeber')
save_log(request.remote_addr,email,password)
user=User.query.filter(User.email==email,User.password==password).first()
if user:
if remeber:
session.permanent = True
session['user_id']=user.id
return redirect(url_for('index'))
else:
return "邮箱或密码错误,请确认后重新登录"
调用处是:
save_log(request.remote_addr,email,password)
这样用户在login页面登录的时候,服务器就能将相关的日志信息储存在数据库里面
接着我们将models映射到数据库里面去
因为我这里初始化过了,使用:
python3 manage.py db migrate
python3 manage.py db upgrade
两条命令映射并更新到数据库中,如果没有初始化的话需要先执行这条:
python3 manage.py db init
执行结束后数据库里面就出现了log表

我们使用错误账号密码,登录之后查看在数据库里面是否储存了相关信息

多次登录之后,再查看数据库,可以看到已经储存了相关信息,完成日志模块的编写。
另外还需要完善的就是从数据库里面提取出日志信息在页面上显示,以及将password在数据库中加盐储存,而不是明文模式储存
Flask框架登录日志模块编写的更多相关文章
- Flask框架(2)--编写简单的用户注册--登录场景
为了更好的理解web前后端的工作业务逻辑:本笔记记录用flask框架编写的一个最初级的代码实现简单的用户注册,登录场景: 初次进入首页,提示--游客,欢迎参观,有登录和注册选项, 登录成功后的用户,会 ...
- 面试简历书写、Flask框架介绍与快速使用、Flask演示登录页面、用户信息页面案例
今日内容概要 面试简历编写 Flask框架介绍与安装 内容详细 1.面试简历编写 # 千万不要几个小时把简历凑出来 几天到一周 # 有没有面试机会,取决于简历写得怎么样 简历写好是第一步 # 投简历的 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- python web框架Flask——后台登录
项目搭建 创建一个项目之后,需要在手动创建几个包(含有__init__.py文件的目录)和文件 1.在主目录下创建配置文件:config.py 2.在主目录下创建扩展文件:exts.py 3.在主目录 ...
- 基于Flask框架搭建视频网站的学习日志(二)
基于Flask框架搭建视频网站的学习日志(二)2020/02/02 一.初始化 所有的Flask程序都必须创建一个程序实例,程序实例是Flask类的对象 from flask import Flask ...
- 基于Flask框架搭建视频网站的学习日志(三)之原始web表单
基于Flask框架搭建视频网站的学习日志(三)1.原始Web 表单 本节主要用于体验一下前端后端直接数据的交互,样例不是太完善,下一节会加入Flash处理,稍微完善一下页面 (备注:建议先阅读廖雪峰老 ...
- Flask框架实现登录注册功能(mysql数据库)
前言: 本例使用Flask框架完成登录和注册操作,包括前端(index.html,regist.html)和后端(app.py)两部分,前端页面不过多介绍,直接进入后端部分: 逻辑思路: 登录部分:运 ...
- Mybatis框架基础支持层——日志模块(8)
前言: java开发中常用的日志框架有Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口不尽相同.为了统一这些工具的接 ...
随机推荐
- 性能问题,AWR High Event enq: US - contention
1.1问题现象 应用反馈业务执行SQL响应超时,需要数据库排除DB是否存在问题,创建AWR观察到top event 新增enq: US - contention ??? 1.2问题分析 1) DB ...
- 指针常量&常量指针&指向常量的指针常量
搞不懂不吃晚饭 (1)指针常量 指针常量是一个常量,但是是指针修饰的. 格式:int * const p; 例如 int a, b; int * const p = &a;//指针常量 //分 ...
- Socket 结构体
proto socket 关联结构: { .type = SOCK_STREAM, .protocol = IPPROTO_TCP, .prot = &tcp_prot, .ops = &am ...
- 如何实现Http请求报头的自动转发[应用篇]
如今的应用部署逐渐向微服务化发展,导致一个完整的事务往往会跨越很多的应用或服务,出于分布式链路跟踪的需要,我们往往将从上游服务获得的跟踪请求报头无脑地向下游服务进行转发.本文介绍的这个名为Header ...
- 2018.1.15复习_ css+js
[1]几个常见的css标签:--------------------------------------------------background-color; 设置背景颜色background-p ...
- php7的Opcache getshell
OPcache基础 OPcache是一种通过解析的PHP脚本预编译的字节码存放在共享内存中来避免每次加载和解析PHP脚本的开销,解析器可以直接从共享内存读取已经缓存的字节码,从而大大提高了PHP的执行 ...
- python学习-pickle模块(序列化)
简介 1 python-pickle模块 该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...
- 使用Folx下载热门电影居然这么简单
在闲暇的时候,很多人会选择观看电影.电视剧来打发时间.对于一些热门的资源,可以通过网页搜索的方式,找到很多与之相对应的种子资源. 但有时候,一些不那么热门的资源就要花费较多时间搜索.有了Folx bt ...
- MindManager使用教程:如何导出HTML5交互式导图
Mindmanager思维导图软件有着友好的用户界面以及丰富的思维导图制作功能.再搭配与Microsoft 软件的无缝集成功能,使得这款思维导图软件越来越受到职场人士的喜爱. 不仅是作为制作思维导图的 ...
- mac实用软件推荐 mac好用的软件
终于入手了梦寐以求的苹果电脑,但却发现其操作系统与Windows大相径庭!不会使用怎么办?不用担心,我们可以借助软件的力量.一款实用的Mac软件不仅能够使你的工作效率显著提高,同时它还能帮助你更快地熟 ...