Selaa lähdekoodia

change authorization

tycoding 1 vuosi sitten
vanhempi
commit
b550dbe493

+ 19 - 1
langchat-auth/src/main/java/cn/tycoding/langchat/auth/config/AuthConfiguration.java

@@ -21,26 +21,37 @@ import cn.dev33.satoken.exception.NotPermissionException;
 import cn.dev33.satoken.exception.NotRoleException;
 import cn.dev33.satoken.filter.SaServletFilter;
 import cn.dev33.satoken.router.SaRouter;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.URLUtil;
 import cn.tycoding.langchat.auth.event.LogEvent;
 import cn.tycoding.langchat.auth.utils.SysLogUtil;
+import cn.tycoding.langchat.biz.utils.ClientStpUtil;
 import cn.tycoding.langchat.common.component.SpringContextHolder;
 import cn.tycoding.langchat.common.properties.AuthProps;
 import cn.tycoding.langchat.common.utils.R;
 import cn.tycoding.langchat.upms.entity.SysLog;
 import com.alibaba.fastjson.JSON;
+import jakarta.servlet.http.HttpServletRequest;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.HttpStatus;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import java.util.Objects;
 
 /**
  * @author tycoding
  * @since 2024/1/5
  */
+@Slf4j
 @Configuration
 @AllArgsConstructor
 public class AuthConfiguration {
 
+    private final SpringContextHolder contextHolder;
     private final AuthProps authProps;
     private final String[] skipUrl = new String[]{
             "/auth/login",
@@ -54,7 +65,11 @@ public class AuthConfiguration {
                 .addExclude("/favicon.ico")
 
                 .setAuth(obj -> {
-                    SaRouter.match("/**")
+                    SaRouter
+                            .match("/upms/**", "/aigc/**", "/app/**")
+                            .check(StpUtil::checkLogin)
+                            .match("/client/**")
+                            .check(ClientStpUtil::checkLogin)
                             .notMatch(skipUrl)
                             .notMatch(authProps.getSkipUrl().toArray(new String[0]))
                     ;
@@ -68,6 +83,9 @@ public class AuthConfiguration {
             SpringContextHolder.publishEvent(new LogEvent(sysLog));
         }
 
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        log.error("Unauthorized request:{}", URLUtil.getPath(request.getRequestURI()));
+
         SaHolder.getResponse()
                 .setStatus(HttpStatus.UNAUTHORIZED.value())
                 .setHeader("Content-Type", "application/json;charset=UTF-8");

+ 4 - 0
langchat-client/pom.xml

@@ -38,5 +38,9 @@
             <groupId>cn.tycoding</groupId>
             <artifactId>langchat-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.tycoding</groupId>
+            <artifactId>langchat-auth</artifactId>
+        </dependency>
     </dependencies>
 </project>