SpringSecurity自定义注解忽略鉴权允许用户匿名访问接口:解决需要多次修改配置文件问题

demo初始效果





- 如图所示我写了一个security的小demo 我们正常的security 访问接口都需要登录才能访问 就像图2 图3的效果
- 那么如果我们想要这个接口不登录也能访问该怎么办呢 看第二步
配置允许匿名用户访问



- 如图1所示在config包里面新建一个类叫SecurityConfig
- 然后内容配置如下,配置好这个配置之后效果如图2所示 就不需要登录可以直接访问了
发现问题

- 但是这样出现一个问题就是我们每添加一个接口如果需要进行配置那么就需要更改config的内容 到时候如果接口多了config就会很乱
- 举个例子如图所示
- 所以我想的是只要在每个接口上面添加上我们写的注解他就自动添加进入到config中去
注解-声明元注解

创建一个元注解的类 如图所示 具体内容如下
元注解 - > Annotation(注解)
- 从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。
- 注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。
- 注解可以标记在包、类、属性、方法,方法参数以及局部变量上,且同一个地方可以同时标记多个注解。
简单来讲元注解其实就起到了一个标注的作用,从而让我们的开发能顺利的找到
@Retention:指定其所修饰的注解的保留策略
@Document:该注解是一个标记注解,用于指示一个注解将被文档化
@Target:用来限制注解的使用范围
@Inherited:该注解使父类的注解能被其子类继承
@Repeatable:该注解是Java8新增的注解,用于开发重复注解
类型注解(Type Annotation):该注解是Java8新增的注解,可以用在任何用到类型的地方
注解-获取接口地址






- 然后我们在接口上方添加上我们刚刚声明好的注解 如图1所示
- 创建一个service 接口 具体内容如下 如图2所示
3. 编写该接口的实现 内容如下 如图3所示
4. 然后我们打印一下查看一下能不能获取到该接口的地址信息 如图4所示 如果报错那么看下一步
注解-报错处理




Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'filterChain' defined in class path resource [com/doit/securitydemo/config/SecurityConfig.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'filterChain' threw exception with message: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because the return value of "org.springframework.web.servlet.mvc.method.RequestMappingInfo.getPatternsCondition()" is null
如果他如图所示报错这个 那么大概意思就是 Spring Boot
和 Spring Security 的版本号不符合 要不就升级要是不能升级 那么就在配置里面添加 如下内容 如图2所示就解决了
注解-完善配置

在配置更改为如下代码
注解-效果演示
效果看视频









