diff --git a/hook/hook.go b/hook/hook.go index e704c54..22f2eaa 100644 --- a/hook/hook.go +++ b/hook/hook.go @@ -5,6 +5,7 @@ import ( "gfast/app/service/admin/auth_service" "gfast/app/service/admin/monitor_service" "gfast/app/service/admin/user_service" + "gfast/library/utils" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" "github.com/gogf/gf/text/gstr" @@ -31,5 +32,5 @@ func OperationLog(r *ghttp.Request) { break } } - go monitor_service.OperationLogAdd(user, menu, url, r.GetMap(), r.Method, r.GetClientIp()) + go monitor_service.OperationLogAdd(user, menu, url, r.GetMap(), r.Method, utils.GetClientIp(r)) } diff --git a/library/service/service.go b/library/service/service.go index fc9d0e0..ed6c986 100644 --- a/library/service/service.go +++ b/library/service/service.go @@ -100,11 +100,11 @@ func AdminLogin(r *ghttp.Request) (string, interface{}) { password := utils.EncryptCBC(data["password"], utils.AdminCbcPublicKey) var keys string if AdminMultiLogin { - keys = data["username"] + password + gmd5.MustEncryptString(r.GetClientIp()) + keys = data["username"] + password + gmd5.MustEncryptString(utils.GetClientIp(r)) } else { keys = data["username"] + password } - ip := r.GetClientIp() + ip := utils.GetClientIp(r) userAgent := r.Header.Get("User-Agent") if err, user := signIn(data["username"], password, r); err != nil { go loginLog(0, data["username"], ip, userAgent, err.Error()) @@ -140,7 +140,7 @@ func AdminLoginAfter(r *ghttp.Request, respData gtoken.Resp) { Token: token, CreateTime: gconv.Uint64(gtime.Timestamp()), UserName: userInfo.UserName, - Ip: r.GetClientIp(), + Ip: utils.GetClientIp(r), Explorer: explorer, Os: os, } @@ -200,7 +200,7 @@ func signIn(username, password string, r *ghttp.Request) (error, *user.User) { returnData := *user //更新登陆时间及ip user.LastLoginTime = gconv.Int(gtime.Timestamp()) - user.LastLoginIp = r.GetClientIp() + user.LastLoginIp = utils.GetClientIp(r) user.Update() return nil, &returnData } diff --git a/library/utils/tools.go b/library/utils/tools.go index 2e6b18c..47fbbad 100644 --- a/library/utils/tools.go +++ b/library/utils/tools.go @@ -63,6 +63,15 @@ func GetLocalIP() (ip string, err error) { return } +//获取客户端IP +func GetClientIp(r *ghttp.Request) string { + ip := r.Header.Get("X-Forwarded-For") + if ip == "" { + ip = r.GetClientIp() + } + return ip +} + //获取相差时间 func GetHourDiffer(startTime, endTime string) int64 { var hour int64