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框架登录日志模块编写的更多相关文章

  1. Flask框架(2)--编写简单的用户注册--登录场景

    为了更好的理解web前后端的工作业务逻辑:本笔记记录用flask框架编写的一个最初级的代码实现简单的用户注册,登录场景: 初次进入首页,提示--游客,欢迎参观,有登录和注册选项, 登录成功后的用户,会 ...

  2. 面试简历书写、Flask框架介绍与快速使用、Flask演示登录页面、用户信息页面案例

    今日内容概要 面试简历编写 Flask框架介绍与安装 内容详细 1.面试简历编写 # 千万不要几个小时把简历凑出来 几天到一周 # 有没有面试机会,取决于简历写得怎么样 简历写好是第一步 # 投简历的 ...

  3. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  4. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(三)——使用Flask-Login库实现登录功能

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  5. python web框架Flask——后台登录

    项目搭建 创建一个项目之后,需要在手动创建几个包(含有__init__.py文件的目录)和文件 1.在主目录下创建配置文件:config.py 2.在主目录下创建扩展文件:exts.py 3.在主目录 ...

  6. 基于Flask框架搭建视频网站的学习日志(二)

    基于Flask框架搭建视频网站的学习日志(二)2020/02/02 一.初始化 所有的Flask程序都必须创建一个程序实例,程序实例是Flask类的对象 from flask import Flask ...

  7. 基于Flask框架搭建视频网站的学习日志(三)之原始web表单

    基于Flask框架搭建视频网站的学习日志(三)1.原始Web 表单 本节主要用于体验一下前端后端直接数据的交互,样例不是太完善,下一节会加入Flash处理,稍微完善一下页面 (备注:建议先阅读廖雪峰老 ...

  8. Flask框架实现登录注册功能(mysql数据库)

    前言: 本例使用Flask框架完成登录和注册操作,包括前端(index.html,regist.html)和后端(app.py)两部分,前端页面不过多介绍,直接进入后端部分: 逻辑思路: 登录部分:运 ...

  9. Mybatis框架基础支持层——日志模块(8)

    前言: java开发中常用的日志框架有Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等,这些工具对外的接口不尽相同.为了统一这些工具的接 ...

随机推荐

  1. 17flask分页

    一,flask_sqlachemy的使用 如果想要展示出来的页面是分页显示,则首先需要知道每页应该分多少个条目,然后通过数据库去查找对应的条数,同时也需要和分页所需的"paginate&qu ...

  2. 第05组 Alpha冲刺 (1/6)

    .th1 { font-family: 黑体; font-size: 25px; color: rgba(0, 0, 255, 1) } #ka { margin-top: 50px } .aaa11 ...

  3. 性能工具-CPU

  4. tcpack--3快速确认模式

    接收到数据报后,会调用tcp_event_data_recv(),不管是在慢速路径的tcp_data_queue中调用还是 在快速路径中处理接收数据后直接调用,注意(如果len <= tcp_h ...

  5. 使用webhook watch pod

  6. rbd无法map(rbd feature disable)

    在jewel版本下默认开启了rbd的一些属性 [root@lab8106 ~]# ceph --show-config|grep rbd|grep features rbd_default_featu ...

  7. K尾相等数(模运算)

    Description 从键盘输入一个自然数K(K>1),若存在自然数M和N(M>N),使得K^M^和K^N^均大于或等于1000,且他们的末尾三位数相等,则称M和N是一对"K尾 ...

  8. 死磕以太坊源码分析之p2p节点发现

    死磕以太坊源码分析之p2p节点发现 在阅读节点发现源码之前必须要理解kadmilia算法,可以参考:KAD算法详解. 节点发现概述 节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中. 以 ...

  9. Springboot整合163邮箱部署项目时发送不了邮件的解决方案

    部署到腾讯云服务器时项目报错 Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: sm ...

  10. ABBYY FineReader 15 对比文档功能

    想必大家在办公的时候都有着要处理各种各样文档的烦恼,一个文档经过一个人或不同人的多次修订都是常有的事,拥有文档对比功能的软件也就应势而生.ABBYY FineReader 15 有许多能够帮助我们办公 ...