项目1登录功能优化(中间件添加操作信息,统一日志输出)

news2024/11/28 18:59:28

中间件添加操作信息

  1. context增加属性userid用于储存访问者id,便于后期使用中间件添加操作信息
type Context struct {
  //......,context其他属性
 Userid   int
}
  1. 对于添加操作信息的中间件函数
// 添加用户操作中间件
func Addoperationmid(db *sql.DB) gee7.HandlerFunc {
 return func(ctx *gee7.Context) {
  ctx.Next()
  //没有id信息,直接退出无需插入操作信息
  if ctx.Userid == 0 {
   return
  }
  if ctx.StatusCode >= 400 {
   Addoperation(db, ctx.Userid, "操作"+ctx.Path+"失败")
  }
  Addoperation(db, ctx.Userid, "操作"+ctx.Path+"成功")
 }
}
  1. Addoperation函数内容
// 添加操作信息,向表OperationRecord(操作列表)添加
func Addoperation(db *sql.DB, id int, operation string) error {

 _, err := db.Exec("insert into OperationRecord (id,behavior,time) VALUES (?, ?, ?)", id, operation, time.Now().Unix())
 if err != nil {
  return err
 }
 return nil
}

统一日志输出

  1. 设置日志输出格式
//设置统一日志输出(日期+时间+输出文件+行+信息)
  log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
  1. 定义统一输出函数
// 统一输出日志
// 程序正常运行
func Lognormal(msg string) {
 log.Println("normal:", msg)
}

// 警告
func Logwarning(msg string) {
 log.Println("warning:", msg)
}

// 错误
func Logerror(msg string) {
 log.Panicln("error:", msg)
}

接口文档

接口执行示例

图片验证码获取


  1. 正确示例
alt

注册


端口: http://localhost:8888/login1 1.

  • 错误示例
  1. 图片验证码错误

alt 2. 邮箱已经注册

alt 3. 邮箱不正确

alt 端口: http://localhost:8888/login2

  • 成功示例:
alt
  • 失败示例:
  1. 验证码过期 alt

  2. 姓名已经使用

alt

登录


端口: http://localhost:8888/signuppsw 成功示例:

alt

失败示例:

  1. 账号密码错误
alt

端口: http://localhost:8888/signupemail1

  • 成功示例:
alt
  • 错误示例
  1. 邮箱错误

alt 端口: http://localhost:8888/signupemail2

  • 失败示例 验证码错误
alt

改密

密码改密
  • 正确示例
alt
  • 错误示例
  1. 密码错误 alt

  2. 身份码错误

alt
  1. 密码不规范
alt

验证码改密

端口: http://localhost:8888/home/resetpaswbyemail1

  • 成功示例
alt

接口: http://localhost:8888/home/resetpaswbyemail2

  • 成功示例
alt

失败示例与登录的失败示例相同


登出


接口: http://localhost:8888/home/signout

  • 成功示例
alt
  • 失败示例

身份码不正确

alt

获取操作记录

接口: http://localhost:8888/getoperations


{
    "code"200,
    "msg""ok",
    "data": {
        "operations": [
            {
                "id"10007,
                "behavior""注册成功",
                "time"1682254498
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682254592
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682254639
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682254653
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682254655
            },
            {
                "id"10007,
                "behavior""登出成功",
                "time"1682254752
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682254936
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682255058
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682333497
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682334103
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334247
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334252
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334272
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334274
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334306
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334321
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682334322
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682336453
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682517978
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682518235
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682518342
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682518407
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682601500
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682601562
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682601897
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682601923
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682601946
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw失败",
                "time"1682607778
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw成功",
                "time"1682607778
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682607789
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw成功",
                "time"1682607789
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw成功",
                "time"1682609855
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw失败",
                "time"1682609862
            },
            {
                "id"10007,
                "behavior""signin成功",
                "time"1682612012
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw成功",
                "time"1682613019
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbypasw失败",
                "time"1682613108
            },
            {
                "id"10007,
                "behavior""操作/home/resetpaswbyemail1成功",
                "time"1682613282
            },
            {
                "id"10007,
                "behavior""改密成功",
                "time"1682613472
            }
        ]
    }
}
  • 成功示例

alt 失败示例与登出相同

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot【运维实用篇】---- 多环境开发

SpringBoot【运维实用篇】---- 多环境开发 1. 多环境开发(yaml单一文件版)2. 多环境开发(yaml多文件版)3. 多环境开发(properties多文件版)4. 多环境开发独立配置文件书写技巧5. 多环境开发控制 讲的内容距…

【LeetCode】1000题挑战(220/1000)

1000题挑战 没有废话,直接开刷! 目录 1000题挑战 没有废话,直接开刷! 第一题:119. 杨辉三角 II - 力扣(Leetcode) 题目接口 解题思路 代码: 过过过过啦!&#x…

【Python】【进阶篇】13、Django安装与配置教程

目录 Django安装与配置教程1. Windows系统安装Django1) 离线安装2) 在线安装3) 配置Django环境变量4) 检查是否安装成功 2. Linux和Mac系统安装Django1) 使用终端在线安装2) 下载安装包离线安装 Django安装与配置教程 本节主要对 Django 在各个平台上的安装方式与配置进行讲解…

Blender 插件UvSquares

目录 1. UvSquares插件1.1 解压UvSquares插件1.2 blender偏好设置1.3 打开插件1.4 安装插件1.5 勾选插件UvSquares1.6 安装UvSquares插件前1.7 安装UvSquares插件后 1. UvSquares插件 Blender 的 UV 编辑器工具,可将 UV 选择重塑为网格。 下载:https:/…

关于jsonp的理解。利用 百度“联想搜索”接口

什么是 回调函数? 在 JavaScript 中,回调函数是指将一个函数作为参数传递给另一个函数,以在某些操作完成后通知调用者。当操作完成时,被调用的函数(即回调函数)将被调用,以执行某些指定的操作或…

Ajax的简单使用

目录 1、ajax概述 2、模拟ajax 3、Jquery实现ajax (1)通用开发步骤 (2)示例 注册用户名重复性验证 (3)示例 ajax解析json数据 (4)实现细节 4、axios实现ajax 5、ajax发送PUT…

西门子安装和配置

一、已安装 V16,检查软件正常 1.判断西门子软件是否正常工作,检查软件图标,如下图。 2.如果软件图标不存在,检查Windows服务是否存在,打开方法如下图: 3.检查西门子的服务,共16个服务&#xff…

万维网服务

~ 在AppSrv上搭建网站服务器 ~ 将访问HTTP://www.chinaskills.com的http的请求重定向到https://chinaskills.com站点 ~ 网站内容设置为“该页面为www.chinaskills.com测试页” ~ 将当前web根目录设置为d:\wwwroot 目录 ~ 启用windows身份验证,只有通过身份验证的…

如何在比特币系统内创造人工生命

信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…

【Node.JS 数据库篇】Sequelize 的用法与mysql的关系

文章目录 一、Sequlize是Node.JS中ORM实现二、Sequelize 执行基础的CRUD三、Sequelize 执行复杂的CRUD1. 指定字段attributes2. 触发数据库事务3. LEFT JOIN 联表关系4. INNER JOIN 联表关系5. 嵌套查询 四、Sequlize常用方法和参数1. findAll2. count3. findByPk4. findOne5. …

【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 策略模式(Strategy Pattern)属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中,根据需要来绑定策略,使得具体实现和策略解耦。 当你想使用对象中各种不同的算法变体,使用if...else 所带来的复杂和…

增强型PID-自适应-前馈-神经网络控制研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Linux】入门介绍

🌱博客主页:大寄一场. 🌱系列专栏:Linux 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注​ 目录 前言 Linux背景介绍 1.发展史 UNIX发展的历史 Linux发展历史 2. 开源 3. 官网 4. 企业应用现状 5. 发行版…

装饰者模式

采用组合而非继承的手法,Decorator模式实现了在运行时动态扩展对象功能的能力,可以根据需要扩展功能。 Decorator类在接口上表现为is-a Component的继承关系,即Decorator类继承了Component类的所有接口。但在实现上又表现为has-a Component的…

打印流~~

文章目录 打印流PrintStreamPrintWriter追加操作输出语句的重定向 Properties使用properties把键值对信息存入到属性文件中去使用properties在文件中取键值对信息 IO框架(了解) 打印流 作用:打印流可以实现方便、高效的打印数据到文件中去。打印流一般是指&#xff…

【Linux】2.1 环境基础开发工具使用——yum

什么是yum Linux 软件包管理器——yum yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上. yum 的使用 卸载: yum -y(直接卸载) remove [xxx] 查找: yum list | grep [xxx] 软件包名称:…

这才是 SpringBoot 统一登录鉴权、异常处理、数据格式 的正确姿势

本篇将要学习 Spring Boot 统一功能处理模块,这也是 AOP 的实战环节 用户登录权限的校验实现接口 HandlerInterceptor WebMvcConfigurer 异常处理使用注解 RestControllerAdvice ExceptionHandler 数据格式返回使用注解 ControllerAdvice 并且实现接口 Response…

Hive拉链表实现

拉链表 定义:用来记录历史变化,相比每天存储全量数据,可大幅减少数据冗余,可以基于历史变化,统计分析历史变化信息使用场景: 用于记录维度变化场景,记录维度变化,根据维度变化记录,统计聚合,加成生成不同时期历史指标 Hive 拉链表实现 实现原理 首次(T1: 2023-04-01) 同步业…

MATLAB-Lingo求解线性规划问题-奶制品2

奶制品的生产销售计划,给定条件不变 为了增加工厂的获利,开发了奶制品的深加工技术:用2小时和3元加工费,可将1kgA1加工成0.8kg高级奶制品B1,也可将1kgA2加工成0.75kg高级奶制品B2,每千克B1能获利44元&#…

ABI Research产业研究:ZiFiSense如何革新物流货物及运输包装追踪

“文章源自前沿科技研究机构ABI Research产业研究,重点介绍了ZETA LPWA协议开发公司纵行科技在业务发展、M-FSK调制技术以及ZETag云标签系列产品在物流货物追踪与包装管理等方面的应用分析,还分享了纵行科技ZETA技术在商业市场和生态系统方面的发展情况。…