|
@@ -70,6 +70,11 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
*/
|
|
|
public static final String HEADER_CHANNEL = "channel";
|
|
|
|
|
|
+ /**
|
|
|
+ * 终端版本号请求头
|
|
|
+ */
|
|
|
+ public static final String HEADER_VERSION = "version";
|
|
|
+
|
|
|
/**
|
|
|
* 应用平台请求头
|
|
|
*/
|
|
@@ -80,11 +85,6 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
*/
|
|
|
public static final String HEADER_TERMINAL = "terminal";
|
|
|
|
|
|
- /**
|
|
|
- * 终端版本号请求头
|
|
|
- */
|
|
|
- public static final String HEADER_VERSION = "version";
|
|
|
-
|
|
|
/**
|
|
|
* 请求时间戳请求头
|
|
|
*/
|
|
@@ -148,53 +148,46 @@ public class SessionContextHolder implements ServletRequestListener {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 设置会话信息,如果当前已存在会话则更新会话主体信息
|
|
|
- *
|
|
|
- * @param id 主体标识
|
|
|
- * @param scope 应用范围
|
|
|
- * @return 会话信息
|
|
|
- */
|
|
|
- public static Session setSession(@NonNull Long id, @NonNull String scope) {
|
|
|
- return setSession(id, scope, Collections.emptySet());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 设置会话信息,如果当前已存在会话则更新会话主体信息
|
|
|
+ * 更新会话信息
|
|
|
*
|
|
|
* @param id 主体标识
|
|
|
+ * @param using 使用类别
|
|
|
* @param scope 应用范围
|
|
|
+ * @param mobile 手机号码
|
|
|
+ * @param registering 注册时间戳
|
|
|
* @param authorities 权限标识集合
|
|
|
* @return 会话信息
|
|
|
*/
|
|
|
- public static Session setSession(@NonNull Long id, @NonNull String scope, @NonNull Set<String> authorities) {
|
|
|
- return setSession(id, Using.NORMAL, scope, null, null, authorities);
|
|
|
+ public static Session updateSession(@NonNull Long id, @NonNull Using using, @NonNull String scope, String mobile,
|
|
|
+ Long registering, @NonNull Set<String> authorities) {
|
|
|
+ return updateSession(id, using, scope, mobile, getVersion(), getPlatform(), registering, authorities);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 设置会话信息,如果当前已存在会话则更新会话主体信息
|
|
|
+ * 更新会话信息
|
|
|
*
|
|
|
* @param id 主体标识
|
|
|
* @param using 使用类别
|
|
|
* @param scope 应用范围
|
|
|
* @param mobile 手机号码
|
|
|
+ * @param version 客户端版本
|
|
|
+ * @param platform 客户端平台
|
|
|
* @param registering 注册时间戳
|
|
|
* @param authorities 权限标识集合
|
|
|
* @return 会话信息
|
|
|
*/
|
|
|
- public static Session setSession(@NonNull Long id, @NonNull Using using, @NonNull String scope, String mobile,
|
|
|
- Long registering, @NonNull Set<String> authorities) {
|
|
|
+ public static Session updateSession(@NonNull Long id, @NonNull Using using, @NonNull String scope, String mobile,
|
|
|
+ String version, Platform platform, Long registering,
|
|
|
+ @NonNull Set<String> authorities) {
|
|
|
Deque<Session> deque = SESSION_CONTEXT.get();
|
|
|
- Session session = deque.peek();
|
|
|
- if (session == null || session == EMPTY_SESSION) {
|
|
|
- if (session != null) {
|
|
|
- deque.poll();
|
|
|
- }
|
|
|
- session = Session.builder().id(id).using(using).scope(scope).mobile(mobile).registering(registering)
|
|
|
- .authorities(Collections.unmodifiableSet(authorities))
|
|
|
- .timestamp(System.currentTimeMillis()).build();
|
|
|
+ Session session = deque.poll();
|
|
|
+ if (session != null) {
|
|
|
+ session = Session.builder().id(id).rid(session.getRid()).using(using).host(session.getHost())
|
|
|
+ .scope(scope).mobile(mobile).device(session.getDevice()).channel(session.getChannel())
|
|
|
+ .version(version).platform(platform).terminal(session.getTerminal())
|
|
|
+ .timestamp(session.getTimestamp()).registering(registering)
|
|
|
+ .authorities(Collections.unmodifiableSet(authorities)).build();
|
|
|
deque.push(session);
|
|
|
- } else {
|
|
|
- session.initializePrincipal(id, using, scope, mobile, registering, authorities);
|
|
|
}
|
|
|
return session;
|
|
|
}
|