Переглянути джерело

添加SessionUtils 方法

tuonina 5 роки тому
батько
коміт
b230392399

+ 22 - 8
tuon-core/src/main/java/cn/tonyandmoney/tuon/core/session/SessionUtils.java

@@ -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());
     }
 
 }