Flask框架登录日志模块编写

web扫描器网站的框架搭建逐渐进入尾声,边搭建框架的时候负责前端的小姐姐也在完善页面设计,过两天就可以进行功能点的完善了。

在扫描器中我们用到了用户登录模块,想法是初始化一个账户和密码,比如说admin : 123456这种,用户第一次登陆之后修改密码即可,需要使用扫描器的话自己在服务器上搭建即可,或者是多人使用同一个账号,避免有人利用注册模块白嫖扫描器,当然也可以添加邀请码注册的功能,不过暂时没有这个想法。

作为web管理员登录之后,应该有一个模块是查看登录日志,可以看是否有尝试暴力破解登录的情况出现,这篇博文的目的也是使用Flask框架编写登录日志模块

登录的日志模型暂定为:ip,email,password,date 四个数据,分别用来储存登录者的IP地址,登录邮箱,密码,和登录时间,管理员也可以通过查看日志快速发现网站的异常情况

首先在 models.py里面创建log日志类

1
2
3
4
5
6
7
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获取用户登录的时间,需要导入包

1
from datetime import datetime

  接着在index.py里面编写save_log函数

1
2
3
4
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里面的方法:

1
ip = request.remote_addr

  调用save_log函数在login函数里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@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 "邮箱或密码错误,请确认后重新登录"

  调用处是:

1
save_log(request.remote_addr,email,password)

  这样用户在login页面登录的时候,服务器就能将相关的日志信息储存在数据库里面

接着我们将models映射到数据库里面去

因为我这里初始化过了,使用:

1
python3 manage.py db migrate

  

1
python3 manage.py db upgrade

  两条命令映射并更新到数据库中,如果没有初始化的话需要先执行这条:

1
python3 manage.py db init

  执行结束后数据库里面就出现了log表

 

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

 

 多次登录之后,再查看数据库,可以看到已经储存了相关信息,完成日志模块的编写。

另外还需要完善的就是从数据库里面提取出日志信息在页面上显示,以及将password在数据库中加盐储存,而不是明文模式储存


__EOF__

本文作者春告鳥
本文链接https://www.cnblogs.com/Cl0ud/p/12613317.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   春告鳥  阅读(767)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示