|
@@ -92,6 +92,11 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
*/
|
|
|
public static final String HEADER_SIGNATURE = "signature";
|
|
|
|
|
|
+ /**
|
|
|
+ * 设备指纹请求头
|
|
|
+ */
|
|
|
+ public static final String HEADER_FINGERPRINT = "fingerprint";
|
|
|
+
|
|
|
/**
|
|
|
* 认证信息请求头
|
|
|
*/
|
|
@@ -159,8 +164,8 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
} else {
|
|
|
session = Session.builder().id(id).scope(scope).anonymous(anonymous).host(original.getHost())
|
|
|
.device(original.getDevice()).channel(original.getChannel()).platform(original.getPlatform())
|
|
|
- .terminal(original.getTerminal()).version(original.getVersion()).timestamp(original.getTimestamp())
|
|
|
- .build();
|
|
|
+ .terminal(original.getTerminal()).version(original.getVersion())
|
|
|
+ .fingerprint(original.getFingerprint()).timestamp(original.getTimestamp()).build();
|
|
|
}
|
|
|
deque.push(session);
|
|
|
return session;
|
|
@@ -397,6 +402,25 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
return StringUtils.ifEmpty(request.getHeader(HEADER_SIGNATURE), (String) null);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取设备指纹
|
|
|
+ *
|
|
|
+ * @return 设备指纹
|
|
|
+ */
|
|
|
+ public static String getFingerprint() {
|
|
|
+ return ObjectUtils.ifNull(getSession(false), Session::getFingerprint);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取设备指纹
|
|
|
+ *
|
|
|
+ * @param request Http请求对象
|
|
|
+ * @return 设备指纹
|
|
|
+ */
|
|
|
+ public static String getFingerprint(@NonNull HttpServletRequest request) {
|
|
|
+ return StringUtils.ifEmpty(request.getHeader(HEADER_FINGERPRINT), (String) null);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取认证信息
|
|
|
*
|
|
@@ -556,8 +580,8 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
HttpServletRequest request = (HttpServletRequest) event.getServletRequest();
|
|
|
Session session = Session.builder().id(getId(request)).host(getHost(request)).scope(getScope(request))
|
|
|
.device(getDevice(request)).channel(getChannel(request)).platform(getPlatform(request))
|
|
|
- .terminal(getTerminal(request)).version(getVersion(request)).anonymous(isAnonymous(request))
|
|
|
- .timestamp(getTimestamp(request)).build();
|
|
|
+ .terminal(getTerminal(request)).version(getVersion(request)).fingerprint(getFingerprint(request))
|
|
|
+ .anonymous(isAnonymous(request)).timestamp(getTimestamp(request)).build();
|
|
|
setSession(session);
|
|
|
}
|
|
|
|