From ec76e345762defc363bdf2524259ba0ced27da89 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Sat, 21 Oct 2023 17:43:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E7=BD=AE=E7=99=BB=E5=BD=95IP?= =?UTF-8?q?=E5=92=8C=E7=99=BB=E5=BD=95=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/utils/token/token.go | 4 ++++ src/modules/common/controller/account.go | 1 + src/modules/common/service/account.go | 3 +++ src/modules/common/service/account.impl.go | 14 ++++++++++++++ src/modules/system/controller/sys_user.go | 10 ++++++---- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/framework/utils/token/token.go b/src/framework/utils/token/token.go index b28462ee..5d93761b 100644 --- a/src/framework/utils/token/token.go +++ b/src/framework/utils/token/token.go @@ -47,6 +47,10 @@ func Create(loginUser *vo.LoginUser, ilobArgs ...string) string { // 设置用户令牌有效期并存入缓存 Cache(loginUser) + // 设置登录IP和登录时间 + loginUser.User.LoginIP = loginUser.IPAddr + loginUser.User.LoginDate = loginUser.LoginTime + // 令牌算法 HS256 HS384 HS512 algorithm := config.Get("jwt.algorithm").(string) var method *jwt.SigningMethodHMAC diff --git a/src/modules/common/controller/account.go b/src/modules/common/controller/account.go index 896fbe7f..692dd1c8 100644 --- a/src/modules/common/controller/account.go +++ b/src/modules/common/controller/account.go @@ -73,6 +73,7 @@ func (s *AccountController) Login(c *gin.Context) { c.JSON(200, result.Err(nil)) return } else { + s.accountService.UpdateLoginDateAndIP(&loginUser) s.sysLogLoginService.CreateSysLogLogin( loginBody.Username, commonConstants.STATUS_YES, "登录成功", ipaddr, location, os, browser, diff --git a/src/modules/common/service/account.go b/src/modules/common/service/account.go index 5f8c42f8..7a98a248 100644 --- a/src/modules/common/service/account.go +++ b/src/modules/common/service/account.go @@ -10,6 +10,9 @@ type IAccount interface { // LoginByUsername 登录生成token LoginByUsername(username, password string) (vo.LoginUser, error) + // UpdateLoginDateAndIP 更新登录时间和IP + UpdateLoginDateAndIP(loginUser *vo.LoginUser) bool + // ClearLoginRecordCache 清除错误记录次数 ClearLoginRecordCache(username string) bool diff --git a/src/modules/common/service/account.impl.go b/src/modules/common/service/account.impl.go index a598a833..44089dff 100644 --- a/src/modules/common/service/account.impl.go +++ b/src/modules/common/service/account.impl.go @@ -13,6 +13,7 @@ import ( "ems.agt/src/framework/utils/crypto" "ems.agt/src/framework/utils/parse" "ems.agt/src/framework/vo" + "ems.agt/src/modules/system/model" systemService "ems.agt/src/modules/system/service" ) @@ -105,6 +106,19 @@ func (s *AccountImpl) LoginByUsername(username, password string) (vo.LoginUser, return loginUser, nil } +// UpdateLoginDateAndIP 更新登录时间和IP +func (s *AccountImpl) UpdateLoginDateAndIP(loginUser *vo.LoginUser) bool { + sysUser := loginUser.User + userInfo := model.SysUser{ + UserID: sysUser.UserID, + LoginIP: sysUser.LoginIP, + LoginDate: sysUser.LoginDate, + UpdateBy: sysUser.UserName, + } + rows := s.sysUserService.UpdateUser(userInfo) + return rows > 0 +} + // ClearLoginRecordCache 清除错误记录次数 func (s *AccountImpl) ClearLoginRecordCache(username string) bool { cacheKey := cachekey.PWD_ERR_CNT_KEY + username diff --git a/src/modules/system/controller/sys_user.go b/src/modules/system/controller/sys_user.go index 65c54a5b..138d4cd8 100644 --- a/src/modules/system/controller/sys_user.go +++ b/src/modules/system/controller/sys_user.go @@ -256,6 +256,8 @@ func (s *SysUserController) Edit(c *gin.Context) { body.UserName = "" // 忽略修改登录用户名称 body.Password = "" // 忽略修改密码 + body.LoginIP = "" // 忽略登录IP + body.LoginDate = 0 // 忽略登录时间 body.UpdateBy = ctx.LoginUserToUserName(c) rows := s.sysUserService.UpdateUserAndRolePost(body) if rows > 0 { @@ -320,12 +322,12 @@ func (s *SysUserController) ResetPwd(c *gin.Context) { } userName := ctx.LoginUserToUserName(c) - SysUserController := model.SysUser{ + info := model.SysUser{ UserID: body.UserID, Password: body.Password, UpdateBy: userName, } - rows := s.sysUserService.UpdateUser(SysUserController) + rows := s.sysUserService.UpdateUser(info) if rows > 0 { c.JSON(200, result.Ok(nil)) return @@ -360,12 +362,12 @@ func (s *SysUserController) Status(c *gin.Context) { } userName := ctx.LoginUserToUserName(c) - SysUserController := model.SysUser{ + info := model.SysUser{ UserID: body.UserID, Status: body.Status, UpdateBy: userName, } - rows := s.sysUserService.UpdateUser(SysUserController) + rows := s.sysUserService.UpdateUser(info) if rows > 0 { c.JSON(200, result.Ok(nil)) return