编写过滤器jar包并植入到项目中

公司有项目有个需求,就是希望可以写一个统一的权限管理。每次开发新项目的时候,可以通过添加依赖包进行权限的获取、验证。

至于为什么不使用aop,拦截器二使用过滤器,是因为在java中,如果3者同事存在,最先执行的是过滤器。

一、新建第三方过滤器jar包的jarone项目

权限管理模块,我是直接创建了spring boot项目,主要是为了方便调试(打包的时候,我会把启动类注释掉)

以下是目录结构:

 编写ipFilter类:用于验证操作

public class ipFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("---->前");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("---->后");
    }
}

 编写ipFilterInitializer类:目的是为了把过滤器注册到容器中

@Configuration
public class ipFilterInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
   
    }

    @Bean
    public FilterRegistrationBean<ipFilter> registrationIpBean(){
        FilterRegistrationBean<ipFilter> bean = new FilterRegistrationBean<ipFilter>();
        bean.setFilter(new ipFilter());
        bean.setName("ipFilter");
        bean.addUrlPatterns("/*");
        bean.setOrder(1);
        return bean;

    }

}

编写PagePermissionController类,为了验证用户是否可以请求到这个jar的api接口

@RestController
@RequestMapping("/PagePermission")
public class PagePermissionController {

    @GetMapping("/getButtons")
    public List<String> getButtons(){
        List<String> lstStr=new ArrayList<>();
        lstStr.add("lyy");
        lstStr.add("18");
        lstStr.add("coder");
        return lstStr;
    }
}

直接启动这个项目,是可以进入到ipFilter过滤器,并可以正常访问接口。

接下来,打包成jar包。需要注意的是,mvn打包工具需要加个配置,如下是pom.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lyy</groupId>
    <artifactId>jarone</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>jarone</name>
    <description>jarone</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

顺序执行命令:

mvn clean   #清除由项目编译创建的target

mvn package -DskipTests  #打包,跳过测试用例

mvn install    #安装到本地仓库

二、新建spring boot业务项目usejarTwo,并引入jar包。

以下是目录结构 :需要在启动类中新增对jarone包的扫描(如果jarone所在包是usejartwo包的子集,则不需要)

编写LoginController类

@RestController
@RequestMapping("/Login")
public class LoginController {
    @GetMapping("/logout")
    public List<String> logout(){
        List<String> lstStr=new ArrayList<>();
        lstStr.add("lyy");
        return lstStr;
    }
}

 启动项目,使用postman请求。可以发现可以请求到jarone中PagePermissionController的接口,   也可以访问到LoginController中的接口,且都进到了过滤器。

 

 

 完成,后面就开始写在过滤器jar中修改请求内容以及相应内容。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值