spring - 仅针对特定 url 的带有过滤器的 Spring 安全性
问题描述
我希望仅针对带有密钥的特定 URL 触发安全性,我认为正在发生的事情是我绕过了 spring 安全性,但是扩展 BasicAuthenticationFilter 的附加授权过滤器正在触发每个 url 如何将 url 设置为添加的 BasicAuthenticationFilter还。我正在实施 Jwt 令牌。
这是我的配置:
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserServiceImpl userService;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(new BCryptPasswordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors()
.and()
.csrf()
.disable().authorizeRequests()
.antMatchers("**/auth/**").authenticated()
.anyRequest().permitAll()
.and()
.addFilter(new AuthorizationFilter(authenticationManager()))
.addFilter(authenticationFilter())
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.headers().cacheControl();
}
public AuthenticationFilter authenticationFilter() throws Exception{
final AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager());
authenticationFilter.setFilterProcessesUrl("/login");
return authenticationFilter ;
}
}
解决方案
选项
- 扩展
BasicAuthenticationFilter
并且作为继承的结果,您可以编写自己的身份验证方法,在运行时来自子类的方法将从 Spring 安全方面考虑。 - 在那里扩展
AbstractAuthenticationFilter
并进行所需的过滤。
推荐阅读
- python - NotFoundError:没有为与节点 {{node PyFunc}} 兼容的“CPU”设备注册的“PyFunc”OpKernel。挂号的:
- java - volatile 的 Java 内存模型保证
- node.js - Nodejs mssql文件流数据类型返回缓冲区?
- javascript - 如果程序需要时间运行,innerHTML 代码不起作用?
- java - @Autowired 在测试期间
- javascript - 我有一个反应应用程序,但无论出于何种原因,导航栏都卡在页面底部而不是标题中
- javascript - d3.js v4 / v5:如何访问父组的配色方案索引?
- ios - 我如何在swiftui中从我的应用程序中的任何视图访问这个:@Environment(\.managedObjectContext) var context?
- php - 无法检索从 php 传递到 twig 的对象信息
- python - 在 django 中创建后将项目添加到多对多