spring boot security设置忽略地址不生效的解决
作者:编码是个技术活 发布时间:2022-06-07 16:37:30
标签:springboot,security,忽略,地址
spring boot security设置忽略地址不生效
最近在试下微服务改造,出现这样一个问题所有请求都经过spring cloud gateway进行认证授权后再访问后端数据方服务,但有些需要合作机构回调,由于进行了security认证,最终的方案是对回调地址进行忽略auth认证。
最终security主要代码如下:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/v1/prNotifyBack");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
/**表示所有的访问都必须进行认证处理后才可以正常进行*/
http.httpBasic().and().authorizeRequests().anyRequest().fullyAuthenticated();
/**所有的Rest服务一定要设置为无状态,以提升操作性能*/
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.csrf().disable();
}
}
这个过程遇到了几个问题:
1、继承WebSecurityConfigurerAdapter
后我们重写configure方法,这个方法需要注意:他有两个不同的参数。
HttpSecurity 及WebSecurity 作用是不一样的,WebSecurity 主要针对的全局的忽略规则,HttpSecurity主要是权限控制规则。
所以一开始用HttpSecurity是达不到忽略地址的目的。
protected void configure(HttpSecurity http){.......}
public void configure(WebSecurity web) {.........}
WebSecurity
全局请求忽略规则配置(比如说静态文件,比如说注册页面)、全局HttpFirewall配置、是否debug配置、全局SecurityFilterChain配置、privilegeEvaluator、expressionHandler、securityInterceptor、
HttpSecurity
具体的权限控制规则配置。
2、忽略不生效问题
web.ignoring().antMatchers("/pr/v1/prNotifyBack");
如上代码如果带上/pr就不会生效,访问依然会出现401错误。/pr是配置的项目路径。但带上项目路径就不生效,这个问题很疑惑。
server:
port: 8089
servlet:
context-path: /pr
SpringBoot SpringSecurity, web.ignore失效
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class CustomSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
.csrf().disable()
.authorizeRequests()
.antMatchers("/api/**").authenticated()
.and()
.addFilterBefore(new TokenFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/")
.antMatchers("/swagger-ui.html")
.antMatchers("/swagger-resources/**")
.antMatchers("/webjars/springfox-swagger-ui/**")
.antMatchers("/v2/api-docs/**");
}
}
这是修改后正常工作的配置文件
之前使用@component注解, 然后使用@Resource注入进来.
导致过滤器全局生效.
正常配置,应该手动new, 而且过滤器类不能加@Component注解
具体原因,之后有空研究一下.
来源:https://blog.csdn.net/wangchengaihuiming/article/details/100129838


猜你喜欢
- 一、实现了Aware的接口Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的,下面我们就一起来看看吧。Aware 接口
- IDEA全局替换通过快捷键 Ctrl+Shift+r 或这点击 Edit 》Find 》Replace In Path有些IDEA版本按了快
- springboot 2.0 mybatis mapper-locations扫描多个路径mapper-locations扫描多个路径,中间
- Java 多线程方法详解startstart方法 启动线程 在start方法中调用start0方法,而start0是一个
- 本文实例为大家分享了C++实现幸运大抽奖的具体代码,供大家参考,具体内容如下程序效果:#ifndef DIALOG_H#define DIA
- 目录题目及要求:提示:原创代码:代码思路:题目及要求:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。提示:0 <
- ByteArrayInputStream介绍ByteArrayInputStream 是字节数组输入流。它继承于 InputStream。I
- 本文总结了我在学习hibernate的过程中,解决hibernate懒加载问题的四种方式。所谓懒加载(lazy)就是延时加载,延迟加载。什么
- 一、堆的创建1、向下调整(以小堆为例) 让parent标记需要调整的节点,child标记parent的左孩子(注意:parent
- mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法雪花算法snowflflake是Twitter开源的分
- ThreadLocal是什么?该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过
- ViewFlipper实现文字轮播(仿淘宝头条垂直滚动广告),供大家参考,具体内容如下广告条目可以单独写成布局文件,然后在布局文件或者代码中
- 这篇文章主要介绍了Spring Cloud Zuul添加过滤器过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 在android studio中存储数据有三个方法,分别是:(1)简单存储——SharedPreferences(2)文件存储:内部存储——
- 一、背景介绍:我们在进行数据存储的时候,有时候会加入本地缓存、分布式缓存以及数据库存储 * 的结构,当我们取值的时候经常是像下面这样的流程:1
- 直接看代码,注释都写清楚了public class MainActivity extends Activity { private
- PPT中的动画效果可分为已有内置动画以及自定义动画。设置内置动画,只需直接指定动画效果类型即可。本文主要介绍如何实现自定义动画,即自定义形状
- Android—沉浸式状态栏我们的征程是星辰大海,而非人间烟尘去掉标题栏首先去掉对应主题下面的Android自带的ActionBar,只需要
- 由于最近公司在开发一款后台与安卓的更新系统,经过再三研究之后,也是选择Mqtt这个目前流行的框架。为了能够让项目运营起来,最终虽说是选择Ac
- FROM子句一、简单FROM子句获取数据源:var queryAllCustomers = &nb