|
@@ -7,6 +7,8 @@ import org.springframework.web.server.ServerWebExchange;
|
|
|
import org.springframework.web.server.WebSession;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
+import java.time.Duration;
|
|
|
+
|
|
|
/**
|
|
|
* 将身份信息注入的线程的本地数据中
|
|
|
*
|
|
@@ -17,8 +19,8 @@ import reactor.core.publisher.Mono;
|
|
|
*/
|
|
|
public class SessionUtils {
|
|
|
|
|
|
- public static final String USER_ID="userId";
|
|
|
- public static final String USER="user";
|
|
|
+ public static final String USER_ID = "userId";
|
|
|
+ public static final String USER = "user";
|
|
|
|
|
|
private static ThreadLocal<IUser> mUserData = new ThreadLocal<>();
|
|
|
|
|
@@ -59,7 +61,6 @@ public class SessionUtils {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 异步获取用户信息,如果当前没有用户信息,则抛出异常
|
|
|
* 一下三个方法是为WebFlux 服务下实现的
|
|
@@ -91,25 +92,38 @@ public class SessionUtils {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 默认两个小时的有效期
|
|
|
+ * @param exchange
|
|
|
+ * @param user
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public static Mono<IUser> setUser(ServerWebExchange exchange, IUser user) {
|
|
|
+ return setUser(exchange, user, Duration.ofHours(2));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Mono<IUser> setUser(ServerWebExchange exchange, IUser user, Duration duration) {
|
|
|
return exchange.getSession()
|
|
|
.flatMap(webSession -> {
|
|
|
webSession.getAttributes().put(USER, user);
|
|
|
webSession.getAttributes().put(USER_ID, user.getUserId());
|
|
|
+ webSession.setMaxIdleTime(duration);
|
|
|
return Mono.just(user);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
- public static IUser getUser(WebSession session){
|
|
|
+ public static IUser getUser(WebSession session) {
|
|
|
return session.getAttribute(USER);
|
|
|
}
|
|
|
- public static Long getUserId(WebSession session){
|
|
|
+
|
|
|
+ public static Long getUserId(WebSession session) {
|
|
|
return session.getAttribute(USER_ID);
|
|
|
}
|
|
|
- public static void setUser(WebSession session,IUser user){
|
|
|
- session.getAttributes().put(USER,user);
|
|
|
- session.getAttributes().put(USER_ID,user.getUserId());
|
|
|
+
|
|
|
+ public static void setUser(WebSession session, IUser user) {
|
|
|
+ session.getAttributes().put(USER, user);
|
|
|
+ session.getAttributes().put(USER_ID, user.getUserId());
|
|
|
}
|
|
|
|
|
|
}
|