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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 让容器管理更轻松!