随手记录一下。
import org.springframework.context.annotation.Import;
import java.lang.annotation.*;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({RoleCheckConfig.class})
public @interface EnableRoleCheck {
}
import com.cx.demo_role_check.filter.RoleCheckFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import javax.servlet.Filter;
public class RoleCheckConfig {
public RoleCheckConfig() {
}
//注入filter
@Bean
public RoleCheckFilter roleCheckFilter(){
return new RoleCheckFilter();
}
//将Filter注册到web
@Bean
public FilterRegistrationBean<Filter> roleCheckFilterRegistration(RoleCheckFilter roleCheckFilter){
FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
filterFilterRegistrationBean.setFilter(roleCheckFilter);
filterFilterRegistrationBean.setName("roleCheckFilter");
return filterFilterRegistrationBean;
}
}
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RoleCheckFilter implements Filter {
private String excludeURLRole;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
System.out.println(httpServletRequest.getRequestURI());
//实现过滤器的功能
if (false){//条件判断 未通过校验 不可以访问
httpServletResponse.setStatus(403);
}else{//直接访问接口
filterChain.doFilter(request,response);
}
}
@Override
public void destroy() {
System.out.println("destroy");
}
}
在其他的项目里面引用相关的jar,启动类上加上相关的注解,功能即可生效。
<dependency>
<groupId>com.cx</groupId>
<artifactId>demo_role_check</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
import com.cx.demo_role_check.config.EnableRoleCheck;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableRoleCheck
public class DemoRoleCheckTestApplication {
public static void main(String[] args) {
SpringApplication.run(DemoRoleCheckTestApplication.class, args);
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。