|
|
@@ -0,0 +1,56 @@
|
|
|
+package cn.reghao.oss.mgr.config;
|
|
|
+
|
|
|
+import cn.reghao.oss.mgr.util.ServletUtil;
|
|
|
+import jakarta.servlet.*;
|
|
|
+import jakarta.servlet.http.HttpServletRequest;
|
|
|
+import jakarta.servlet.http.HttpServletResponse;
|
|
|
+import org.slf4j.MDC;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.filter.OncePerRequestFilter;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author reghao
|
|
|
+ * @date 2023-08-25 21:14:23
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class TokenFilter extends OncePerRequestFilter {
|
|
|
+ @Override
|
|
|
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
|
|
+ throws IOException, ServletException {
|
|
|
+ String requestId = ServletUtil.getHeader("x-request-id");
|
|
|
+ MDC.put("request_id", requestId);
|
|
|
+
|
|
|
+ long userId = -1;
|
|
|
+ String userIdStr = ServletUtil.getHeader("x-user-id");
|
|
|
+ if (userIdStr != null) {
|
|
|
+ userId = Long.parseLong(userIdStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ String loginId = userId + "";
|
|
|
+ String loginIdStr = ServletUtil.getHeader("x-login-id");
|
|
|
+ if (loginIdStr != null) {
|
|
|
+ loginId = loginIdStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<String> roles = new HashSet<>();
|
|
|
+ String rolesStr = ServletUtil.getHeader("x-user-roles");
|
|
|
+ if (rolesStr != null) {
|
|
|
+ roles.addAll(Arrays.asList(rolesStr.split(",")));
|
|
|
+ }
|
|
|
+
|
|
|
+ try (UserContext.UserResource ignored = UserContext.set(userId)) {
|
|
|
+ filterChain.doFilter(request, response);
|
|
|
+ } finally {
|
|
|
+ MDC.clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void destroy() {
|
|
|
+ }
|
|
|
+}
|