🎨 优化登录逻辑,新增后端ip判断

This commit is contained in:
2025-10-22 00:11:43 +08:00
parent 56333b363b
commit 6e924c9630
2 changed files with 87 additions and 18 deletions

View File

@@ -137,6 +137,40 @@ func (*AppUserApi) WechatLogin(ctx *gin.Context) {
r.Banned("用户已被禁用", ctx)
return
}
// 添加登录日志
loginLog := user2.LoginLog{
UserId: user.ID,
UserName: user.NickName,
Phone: user.Phone,
Ip: ctx.ClientIP(),
Address: utils.GetIPAdcode(ctx.ClientIP()),
Device: ctx.Request.Header.Get("sec-ch-ua-platform"),
UserAgent: ctx.Request.UserAgent(),
Mode: "微信登录",
LoginTime: time.Now().Format("2006-01-02 15:04:05"),
}
go func() {
err = global.GVA_DB.Create(&loginLog).Error
if err != nil {
global.GVA_LOG.Error("添加登录日志失败!", zap.Error(err))
}
}()
adcodes := utils.CheckIPInAdcodes(loginLog.Address)
if !adcodes {
global.GVA_LOG.Warn("异常登录地址", zap.String("address", loginLog.Address), zap.Uint("userId", user.ID))
user.Status = 0
if err := global.GVA_DB.Save(&user).Error; err != nil {
global.GVA_LOG.Error("禁用用户失败!", zap.Error(err))
}
r.Banned("用户已被禁用", ctx)
return
}
// 生成token
token, claims, err := user_jwt.LoginToken(user)
if err != nil {
@@ -157,24 +191,6 @@ func (*AppUserApi) WechatLogin(ctx *gin.Context) {
}
user_jwt.SetToken(ctx, token, int(claims.RegisteredClaims.ExpiresAt.Unix()-time.Now().Unix()))
// 添加登录日志
loginLog := user2.LoginLog{
UserId: user.ID,
UserName: user.NickName,
Phone: user.Phone,
Ip: ctx.ClientIP(),
Address: utils.GetIPAdcode(ctx.ClientIP()),
Device: ctx.Request.Header.Get("sec-ch-ua-platform"),
UserAgent: ctx.Request.UserAgent(),
Mode: "微信登录",
LoginTime: time.Now().Format("2006-01-02 15:04:05"),
}
err = global.GVA_DB.Create(&loginLog).Error
if err != nil {
global.GVA_LOG.Error("添加登录日志失败!", zap.Error(err))
}
r.OkWithDetailed(gin.H{
"User": user,
"Token": token,
@@ -219,6 +235,39 @@ func (*AppUserApi) PwdLogin(ctx *gin.Context) {
return
}
// 添加登录日志
loginLog := user2.LoginLog{
UserId: user.ID,
UserName: user.NickName,
Phone: user.Phone,
Ip: ctx.ClientIP(),
Address: utils.GetIPAdcode(ctx.ClientIP()),
Device: ctx.Request.Header.Get("sec-ch-ua-platform"),
UserAgent: ctx.Request.UserAgent(),
Mode: "账号密码登录",
LoginTime: time.Now().Format("2006-01-02 15:04:05"),
}
go func() {
err = global.GVA_DB.Create(&loginLog).Error
if err != nil {
global.GVA_LOG.Error("添加登录日志失败!", zap.Error(err))
}
}()
adcodes := utils.CheckIPInAdcodes(loginLog.Address)
if !adcodes {
global.GVA_LOG.Warn("异常登录地址", zap.String("address", loginLog.Address), zap.Uint("userId", user.ID))
user.Status = 0
if err := global.GVA_DB.Save(&user).Error; err != nil {
global.GVA_LOG.Error("禁用用户失败!", zap.Error(err))
}
r.Banned("用户已被禁用", ctx)
return
}
// 生成token
token, claims, err := user_jwt.LoginToken(user)
if err != nil {