yq 4 rokov pred
rodič
commit
6e5b80119c

+ 2 - 0
fiveep-controller/src/main/java/com/bizmatics/controller/DemoControllerApplication.java

@@ -2,10 +2,12 @@ package com.bizmatics.controller;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
+@ServletComponentScan("com.bizmatics.service.config.SessionFilter")
 @EnableFeignClients("com.bizmatics")
 @ComponentScan("com.bizmatics")
 @SpringBootApplication

+ 23 - 1
fiveep-controller/src/main/java/com/bizmatics/controller/web/UserController.java

@@ -1,9 +1,15 @@
 package com.bizmatics.controller.web;
 
 
+import com.bizmatics.model.User;
+import com.bizmatics.service.util.SessionLocal;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -13,9 +19,25 @@ import org.springframework.stereotype.Controller;
  * @author ya
  * @since 2021-07-07
  */
-@Controller
+@RestController
 @RequestMapping("/user")
 public class UserController {
 
+
+
+    @RequestMapping("/login")
+    public User login(@RequestParam String name, @RequestParam String password, HttpServletRequest request){
+        User user = new User();
+        user.setUserName(name);
+        user.setUserPassword(password);
+        //存储session
+        request.getSession().setAttribute( "sessionuser", user );
+        SessionLocal.setUser(user);
+        return user;
+    }
+    @RequestMapping("test")
+    public void test(){
+        System.out.println(1);
+    }
 }
 

+ 0 - 22
fiveep-service/pom.xml

@@ -61,28 +61,6 @@
             <version>3.3.2</version>
         </dependency>
 
-        <dependency>
-            <groupId>io.seata</groupId>
-            <artifactId>seata-spring-boot-starter</artifactId>
-            <version>1.4.2</version>
-            <!--            <exclusions>-->
-            <!--                <exclusion>-->
-            <!--                    <artifactId>guava</artifactId>-->
-            <!--                    <groupId>com.google.guava</groupId>-->
-            <!--                </exclusion>-->
-            <!--                <exclusion>-->
-            <!--                    <artifactId>druid</artifactId>-->
-            <!--                    <groupId>com.alibaba</groupId>-->
-            <!--                </exclusion>-->
-            <!--            </exclusions>-->
-        </dependency>
-
-<!--        <dependency>-->
-<!--            <groupId>com.bizmatics</groupId>-->
-<!--            <artifactId>mhfire-provider</artifactId>-->
-<!--            <version>0.0.1</version>-->
-<!--        </dependency>-->
-
 
     </dependencies>
 

+ 53 - 0
fiveep-service/src/main/java/com/bizmatics/service/config/SessionFilter.java

@@ -0,0 +1,53 @@
+package com.bizmatics.service.config;
+
+
+import com.bizmatics.common.core.exception.BusinessException;
+import com.bizmatics.model.User;
+import com.bizmatics.service.util.SessionLocal;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author yq
+ * @date 2021/7/8 10:35
+ */
+@Component
+@Slf4j
+@WebFilter(urlPatterns = "/*", filterName = "reqResFilter")
+public class SessionFilter implements Filter {
+
+    private static final Set<String> ALLOWED_PATHS = Collections.unmodifiableSet(new HashSet<>(
+            Collections.singletonList("/user/login")));
+
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest)servletRequest;
+        String path = request.getRequestURI().substring(request.getContextPath().length()).replaceAll("[/]+$", "");
+        boolean allowedPath = ALLOWED_PATHS.contains(path);
+        if (!allowedPath){
+            HttpSession session = request.getSession();
+            if(session.getAttribute( "sessionuser") != null) {
+                if(SessionLocal.getUser() == null) {
+                    log.info("【当前线程"+Thread.currentThread().getName()+"中用户信息为空,从session中set到ThreadLocal.】");
+                    SessionLocal.setUser( (User)session.getAttribute( "sessionuser") );
+                }
+            } else {
+                throw new BusinessException("用户未登录请先登录");
+            }
+        }
+        chain.doFilter(servletRequest,servletResponse);
+    }
+
+}

+ 33 - 0
fiveep-service/src/main/java/com/bizmatics/service/util/SessionLocal.java

@@ -0,0 +1,33 @@
+package com.bizmatics.service.util;
+
+import com.bizmatics.model.User;
+import lombok.extern.log4j.Log4j2;
+
+/**
+ * @author yq
+ * @date 2021/7/8 10:34
+ */
+@Log4j2
+public class SessionLocal {
+    private static ThreadLocal<User> local = new ThreadLocal<User>();
+
+    /**
+     * 设置用户信息
+     *
+     * @param user
+     */
+    public static void setUser( User user )
+    {
+        local.set( user );
+    }
+
+    /**
+     * 获取登录用户信息
+     *
+     * @return
+     */
+    public static User getUser() {
+        log.info( "当前线程:" + Thread.currentThread().getName() );
+        return local.get();
+    }
+}