周浩 9 years ago
parent
commit
a6571f6ff3

+ 1 - 22
hsweb-web-core/src/main/java/org/hsweb/web/core/CoreAutoConfiguration.java

@@ -1,13 +1,8 @@
 package org.hsweb.web.core;
 
-import org.hsweb.web.core.session.HttpSessionManager;
-import org.hsweb.web.core.session.siample.SimpleHttpSessionManager;
-import org.hsweb.web.core.session.siample.UserLoginOutListener;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
+
 /**
  * Created by zhouhao on 16-5-6.
  */
@@ -15,21 +10,5 @@ import org.springframework.context.annotation.Configuration;
 @ComponentScan("org.hsweb.web.core")
 public class CoreAutoConfiguration {
 
-    @Bean
-    @ConditionalOnMissingBean(HttpSessionManager.class)
-    @ConditionalOnWebApplication
-    public HttpSessionManager simpleHttpSessionManager() {
-        SimpleHttpSessionManager httpSessionManager = new SimpleHttpSessionManager();
-        return httpSessionManager;
-    }
-
-    @Bean
-    @ConditionalOnMissingBean(HttpSessionManager.class)
-    @ConditionalOnWebApplication
-    public UserLoginOutListener sessionListener() {
-        UserLoginOutListener loginOutListener = new UserLoginOutListener();
-        loginOutListener.setHttpSessionManager(simpleHttpSessionManager());
-        return loginOutListener;
-    }
 
 }

+ 2 - 2
hsweb-web-core/src/main/java/org/hsweb/web/core/session/HttpSessionManager.java

@@ -39,10 +39,10 @@ public interface HttpSessionManager {
     /**
      * 添加一个用户
      *
-     * @param userId  用户ID
+     * @param user  用户
      * @param session HttpSession
      */
-    void addUser(String userId, HttpSession session) ;
+    void addUser(User user, HttpSession session) ;
 
     Set<User> tryGetAllUser();
 

+ 3 - 3
hsweb-web-core/src/main/java/org/hsweb/web/core/session/redis/RedisHttpSessionManager.java

@@ -70,10 +70,10 @@ public class RedisHttpSessionManager implements HttpSessionManager {
     }
 
     @Override
-    public void addUser(String userId, HttpSession session) {
-        removeUser(userId);
+    public void addUser(User user, HttpSession session) {
+        removeUser(user.getId());
         sessionRedisTemplate.execute((RedisCallback) connection -> {
-            String key = "http.session.user:" + userId;
+            String key = "http.session.user:" + user.getId();
             String value = session.getId();
             connection.set(key.getBytes(), value.getBytes());
             return null;

+ 7 - 10
hsweb-web-core/src/main/java/org/hsweb/web/core/session/siample/SimpleHttpSessionManager.java

@@ -57,13 +57,9 @@ public class SimpleHttpSessionManager implements HttpSessionManager {
     public void removeUser(String userId) {
         HttpSession session = userSessionStorage.get(userId);
         if (session != null) {
-            try {
-                session.removeAttribute("user");
-            } catch (Exception e) {
-            } finally {
-                sessionStorage.remove(session.getId());
-                userSessionStorage.remove(userId);
-            }
+            session.removeAttribute("user");
+            sessionStorage.remove(session.getId());
+            userSessionStorage.remove(userId);
         }
     }
 
@@ -80,10 +76,11 @@ public class SimpleHttpSessionManager implements HttpSessionManager {
     }
 
     @Override
-    public void addUser(String userId, HttpSession session) {
-        removeUser(userId);//踢出已经登陆
+    public void addUser(User user, HttpSession session) {
+        removeUser(user.getId());//踢出已经登陆
         sessionStorage.put(session.getId(), session);
-        userSessionStorage.put(userId, session);
+        userSessionStorage.put(user.getId(), session);
+        session.setAttribute("user", user);
     }
 
     @Override

+ 25 - 0
hsweb-web-core/src/main/java/org/hsweb/web/core/session/siample/SimpleHttpSessionManagerAutoConfiguration.java

@@ -0,0 +1,25 @@
+package org.hsweb.web.core.session.siample;
+
+import org.hsweb.web.core.session.HttpSessionManager;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConditionalOnMissingBean(HttpSessionManager.class)
+@ConditionalOnWebApplication
+public class SimpleHttpSessionManagerAutoConfiguration {
+    @Bean
+    public HttpSessionManager simpleHttpSessionManager() {
+        SimpleHttpSessionManager httpSessionManager = new SimpleHttpSessionManager();
+        return httpSessionManager;
+    }
+
+    @Bean
+    public UserLoginOutListener sessionListener() {
+        UserLoginOutListener loginOutListener = new UserLoginOutListener();
+        loginOutListener.setHttpSessionManager(simpleHttpSessionManager());
+        return loginOutListener;
+    }
+}

+ 1 - 2
hsweb-web-core/src/main/java/org/hsweb/web/core/session/siample/UserLoginOutListener.java

@@ -17,7 +17,7 @@ public class UserLoginOutListener implements HttpSessionListener {
 
     /* Session创建事件 */
     public void sessionCreated(HttpSessionEvent se) {
-
+        logger.info("session created:" + se.getSession().getId());
     }
 
     /* Session失效事件 */
@@ -28,7 +28,6 @@ public class UserLoginOutListener implements HttpSessionListener {
             if (user != null) {
                 httpSessionManager.removeUser(user.getId());
             }
-            httpSessionManager.removeSession(session.getId());
         } catch (Exception e) {
             logger.error("remove session or user error!", e);
         }