提交 855cc5fe authored 作者: 马晨俊's avatar 马晨俊

mcj:删除登录拦截器

上级 515ecd47
...@@ -2,7 +2,9 @@ package com.zjty.inspect; ...@@ -2,7 +2,9 @@ package com.zjty.inspect;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication @SpringBootApplication
public class InspectApplication { public class InspectApplication {
...@@ -11,4 +13,8 @@ public class InspectApplication { ...@@ -11,4 +13,8 @@ public class InspectApplication {
SpringApplication.run(InspectApplication.class, args); SpringApplication.run(InspectApplication.class, args);
} }
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
} }
package com.zjty.inspect.aop; package com.zjty.inspect.aop;
import com.zjty.inspect.entity.ServerResponse;
import com.zjty.inspect.entity.User; import com.zjty.inspect.entity.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
...@@ -9,8 +10,11 @@ import org.aspectj.lang.annotation.Aspect; ...@@ -9,8 +10,11 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature; import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
...@@ -19,6 +23,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -19,6 +23,7 @@ import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @author Mcj * @author Mcj
...@@ -30,11 +35,8 @@ import java.util.List; ...@@ -30,11 +35,8 @@ import java.util.List;
@Component @Component
public class AopIntercept { public class AopIntercept {
private User user; @Autowired
private RestTemplate restTemplate;
public void setUser(User user) {
this.user = user;
}
@Pointcut("@annotation(com.zjty.inspect.aop.AuthAnnotation)") @Pointcut("@annotation(com.zjty.inspect.aop.AuthAnnotation)")
public void doPointCut() { public void doPointCut() {
...@@ -42,6 +44,15 @@ public class AopIntercept { ...@@ -42,6 +44,15 @@ public class AopIntercept {
@Around("doPointCut()") @Around("doPointCut()")
public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable { public Object aroundMethod(ProceedingJoinPoint joinPoint) throws Throwable {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String sessionId = request.getHeader("session");
String url = "http://120.55.57.35:12345/user/getLogin/"+sessionId;
ServerResponse serverResponse = restTemplate.getForObject(url, ServerResponse.class);
if(serverResponse!=null && serverResponse.getCode()!=200){
ResponseEntity.status(403).build();
}
User user = serverResponse.getData();
AuthAnnotation authAnnotation = ((MethodSignature)joinPoint.getSignature()).getMethod().getAnnotation(AuthAnnotation.class); AuthAnnotation authAnnotation = ((MethodSignature)joinPoint.getSignature()).getMethod().getAnnotation(AuthAnnotation.class);
String[] code = authAnnotation.code(); String[] code = authAnnotation.code();
if(user!=null){ if(user!=null){
...@@ -64,4 +75,5 @@ public class AopIntercept { ...@@ -64,4 +75,5 @@ public class AopIntercept {
} }
return ResponseEntity.status(403).build(); return ResponseEntity.status(403).build();
} }
} }
...@@ -25,8 +25,7 @@ public class FpCorsFilter implements Filter { ...@@ -25,8 +25,7 @@ public class FpCorsFilter implements Filter {
HttpServletResponse response = (HttpServletResponse) res; HttpServletResponse response = (HttpServletResponse) res;
// 设置响应头的权限信息 request.getHeader("Origin") // 设置响应头的权限信息 request.getHeader("Origin")
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, PATCH, DELETE"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, PATCH, DELETE");
......
package com.zjty.inspect.config;
import com.zjty.inspect.aop.AopIntercept;
import com.zjty.inspect.entity.ServerResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Objects;
/**
* @author Mcj
* @date 2020-04-02 14:42
*/
@Configuration
public class LoginInterceptor implements HandlerInterceptor {
@Autowired
private RestTemplate restTemplate;
@Autowired
private AopIntercept aopIntercept;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) {
String sessionId = request.getHeader("session");
String url = "http://120.55.57.35:12345/user/getLogin/"+sessionId;
ServerResponse user = restTemplate.getForObject(url, ServerResponse.class);
if(Objects.requireNonNull(user).getData()==null){
//不符合条件的给出提示信息,并转发到登录页面
response.setStatus(403);
return false;
}
aopIntercept.setUser(user.getData());
return true;
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
...@@ -12,18 +12,16 @@ import java.util.List; ...@@ -12,18 +12,16 @@ import java.util.List;
@Configuration @Configuration
public class MvcConfig extends WebMvcConfigurationSupport { public class MvcConfig extends WebMvcConfigurationSupport {
@Autowired
private LoginInterceptor loginInterceptor;
@Override @Override
protected void addInterceptors(InterceptorRegistry registry) { protected void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链 // 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则,/**表示拦截所有请求 // addPathPatterns 用于添加拦截规则,/**表示拦截所有请求
// excludePathPatterns 用户排除拦截 // excludePathPatterns 用户排除拦截
registry.addInterceptor(loginInterceptor) // registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**") // .addPathPatterns("/**")
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**","/doc.html"); // .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**","/doc.html");
; // ;
super.addInterceptors(registry); super.addInterceptors(registry);
} }
......
...@@ -11,4 +11,5 @@ import java.io.Serializable; ...@@ -11,4 +11,5 @@ import java.io.Serializable;
@Data @Data
public class ServerResponse implements Serializable { public class ServerResponse implements Serializable {
private User data; private User data;
private Integer code;
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论