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. vs2010 中取消检测有潜在危险的 Request.Form 值的方法

    1,<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true&q ...

  2. 简单STL

    string: string s="5418340"; sort(s.begin(),s.end()); cout<<s; /**begin是头迭代器,end是尾迭代器 ...

  3. 用GitHub Pages搭建博客(六)

    本篇介绍GitHub Pages网站加速 在上一篇提到如何对GitHub Pages配置自定义域名.其实,不论GitHub Pages的默认域名还是自定义域名,都使用了GitHub的CDN进行加速,虽 ...

  4. App与小程序对接

    背景: 商品详情页,点击分享,分享到微信好友,点开链接App拉起小程序. 用户在小程序浏览完成,跳转至原App购买商品. 功能点: 实现APP与小程序互调. 前提: 已对接好友盟ShareSDK(需要 ...

  5. Markdown文档示例

    目录 我是大标题,和一级标题长得一样 我是次级标题,和二级标题长得一样 这是一级标题 这是二级标题 一直到六级标题 列表 表格 分割线 字体 超链接 插入图片 引用 代码块 注意下面每一个标记如果和内 ...

  6. linux用户的增删改查(useradd/id/usermod/userdel)

    与用户(user)相关的配置文件:  /etc/passwd 注:用户(user)的配置文件: /etc/shadow 注:用户(user)影子口令文件: 与用户组(group)相关的配置文件:  / ...

  7. rbd的image快照与Pool快照

    前言 这个问题是不久前在ceph社区群里看到的,创建image的时候,当时的报错如下: 2016-12-13 23:13:10.266865 7efbfb7fe700 -1 librbd::image ...

  8. android开发导包升级到androidx踩坑记录【转载】

    最近一直在做安卓开发,奈何手中的资料比较老,资料上的一些Import经常没有,十分让人头疼. 感谢简书上的[张晴天天天天天]做的整理. 在这里也记录一下备用. 升级Android Studio后,在 ...

  9. 彻底卸载MySQL5.7(msi,exe)版

    1,停止MySQL服务 2,右键找到任务管理器 3,在程序中卸载MySQL 4,删除MySQL安装目录 有的是在C:\Program Files下,我的是在(X86)下 5,删除隐藏文件中的MySQL ...

  10. Canvas实现放大镜效果完整案例

    本文主要记录 canvas 在图像.文字处理.离屏技术和放大镜特效的实现过程中使用到的API.先看下效果吧: 一张模糊的图片: 鼠标点击任意位置,产生放大效果: 哇塞~ 一个帅哥,哈哈哈哈~ 1.显示 ...