Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
21443191
Commit
21443191
authored
Aug 27, 2025
by
xuepeng.chang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
保存用户ip
parent
be1a550e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
25 additions
and
4 deletions
+25
-4
Constants.java
src/main/java/cn/quantgroup/xyqb/Constants.java
+4
-0
LoginRecordServiceImpl.java
...tgroup/xyqb/service/user/impl/LoginRecordServiceImpl.java
+7
-1
IpUtil.java
src/main/java/cn/quantgroup/xyqb/util/IpUtil.java
+13
-2
UserLoginTest.java
src/test/java/login/UserLoginTest.java
+1
-1
No files found.
src/main/java/cn/quantgroup/xyqb/Constants.java
View file @
21443191
...
...
@@ -47,6 +47,10 @@ public interface Constants {
String
X_BEHAVIOR_CHALLENGE
=
"qg-behavior-challenge"
;
String
X_BEHAVIOR_VALIDATE
=
"qg-behavior-validate"
;
String
X_BEHAVIOR_SECCODE
=
"qg-behavior-seccode"
;
// 请求来源的 ip,由于 用户访问现在不直接访问用户中心,都是通过其他系统访问,就不能把这个当作用户访问的ip
String
X_ORIGINAL_CLIENT_IP
=
"x-original-client-ip"
;
// 用户访问的ip,如果 需要使用或者记录,其他系统访问的时候 添加该请求头,放的是用户的ip
String
X_ORIGINAL_USER_IP
=
"x-original-user-ip"
;
String
X_BEHAVIOR_IP
=
"ip"
;
...
...
src/main/java/cn/quantgroup/xyqb/service/user/impl/LoginRecordServiceImpl.java
View file @
21443191
...
...
@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.controller.IBaseController;
import
cn.quantgroup.xyqb.entity.LoginRecord
;
import
cn.quantgroup.xyqb.repository.ILoginRecordRepository
;
import
cn.quantgroup.xyqb.service.user.ILoginRecordService
;
import
cn.quantgroup.xyqb.util.IpUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -49,7 +50,12 @@ public class LoginRecordServiceImpl implements ILoginRecordService, IBaseControl
}
loginRecord
.
setUserTerminal
(
request
.
getHeader
(
"x-user-terminal"
));
loginRecord
.
setIp
(
request
.
getHeader
(
"x-original-client-ip"
));
String
ip
=
IpUtil
.
getUserIp
(
request
);
if
(
StringUtils
.
isEmpty
(
ip
)){
log
.
warn
(
"调用放没有传用户IP,这里做下兜底"
);
ip
=
request
.
getHeader
(
Constants
.
X_ORIGINAL_CLIENT_IP
);
}
loginRecord
.
setIp
(
ip
);
loginRecord
.
setAppName
(
request
.
getHeader
(
"appName"
));
loginRecord
.
setVersion
(
request
.
getHeader
(
"version"
));
loginRecord
.
setUserAgent
(
request
.
getHeader
(
"User-Agent"
));
...
...
src/main/java/cn/quantgroup/xyqb/util/IpUtil.java
View file @
21443191
package
cn
.
quantgroup
.
xyqb
.
util
;
import
cn.quantgroup.tech.util.TechEnvironment
;
import
cn.quantgroup.xyqb.Constants
;
import
com.google.common.collect.Sets
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
...
...
@@ -83,10 +84,20 @@ public class IpUtil {
}
String
remoteAddr
=
request
.
getRemoteAddr
();
String
xRealIp
=
request
.
getHeader
(
"x-real-ip"
);
String
xOriginalClientIp
=
request
.
getHeader
(
"x-original-client-ip"
);
String
xOriginalClientIp
=
request
.
getHeader
(
Constants
.
X_ORIGINAL_CLIENT_IP
);
logger
.
info
(
"Test ips:[client={}, old={}, new={}]"
,
remoteAddr
,
xRealIp
,
xOriginalClientIp
);
}
public
static
String
getUserIp
(
HttpServletRequest
request
)
{
Objects
.
requireNonNull
(
request
,
"无效请求"
);
String
ip
=
request
.
getHeader
(
Constants
.
X_ORIGINAL_USER_IP
);
if
(
ValidationUtil
.
validateIpv4
(
ip
)
&&
!
Objects
.
equals
(
LOCAL_ADDRESS
,
ip
))
{
return
ip
;
}
// 这里不做兜底,使用方做
return
null
;
}
/**
* 获取请求客户端的真实ip地址
*
...
...
@@ -95,7 +106,7 @@ public class IpUtil {
*/
public
static
String
getRemoteIP
(
HttpServletRequest
request
)
{
Objects
.
requireNonNull
(
request
,
"无效请求"
);
String
ip
=
request
.
getHeader
(
"x-original-client-ip"
);
String
ip
=
request
.
getHeader
(
Constants
.
X_ORIGINAL_CLIENT_IP
);
if
(
ValidationUtil
.
validateIpv4
(
ip
)
&&
!
Objects
.
equals
(
LOCAL_ADDRESS
,
ip
))
{
return
ip
;
}
...
...
src/test/java/login/UserLoginTest.java
View file @
21443191
...
...
@@ -73,7 +73,7 @@ public class UserLoginTest {
//测试userId为空的情况
String
userId
=
""
;
String
ip
=
"172.16.0.1"
;
request
.
addHeader
(
"x-original-client-ip"
,
ip
);
request
.
addHeader
(
Constants
.
X_ORIGINAL_CLIENT_IP
,
ip
);
request
.
addHeader
(
"authorization"
,
"Basic MTg1MTMzNDE4MDg6MTIzNDU2"
);
JsonResult
jsonResult
=
userController
.
login
(
channelId
,
appChannel
,
createFrom
,
userId
,
"xyqb"
,
"xyqb"
,
null
,
request
,
""
,
UserConstant
.
defaultTenantId
);
AuthBean
authBean
=
(
AuthBean
)
jsonResult
.
getData
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment