ResourceInjector.java
1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.infoloop.tianting.intercepter;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.strategy.SaStrategy;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.HandlerMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ResourceInjector implements HandlerInterceptor {
@Override
@SuppressWarnings("unchecked")
public boolean preHandle(@NonNull final HttpServletRequest httpServletRequest, @NonNull final HttpServletResponse httpServletResponse, @NonNull final Object handler) {
boolean isHandler = handler instanceof HandlerMethod;
if (!isHandler) {
return true;
}
final var method = ((HandlerMethod) handler).getMethod();
if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) {
return true;
}
final var pathVariables = (Map<String, Object>) httpServletRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
if (pathVariables == null) {
return true;
}
return true;
}
}