我已按如下方式配置了我的过滤器,但在Spring Security Filter链之前没有调用它。我已将订单设为零
我使用支持过滤器设置顺序的Spring Boot 1.3
from itertools import combinations
def triangles(g):
result = [0] * g.vcount()
adjlist = [set(neis) for neis in g.get_adjlist()]
for vertex, neis in enumerate(adjlist):
for nei1, nei2 in combinations(neis, 2):
if nei1 in adjlist[nei2]:
result[vertex] += 1
return result
答案 0 :(得分:8)
<强> application.properties 强>
security.filter-order=5
我自己还没有这样做,但看看它出现的代码你只需要为安全过滤器的顺序设置一个属性。例如,在application.properties
中这应该在安全过滤器之前订购过滤器。我不知道改变这个顺序的含义是什么,就安全性而言,对我来说感觉有点风险。 Spring开发人员之间就此进行了讨论。它最终实现了我的答案。
讨论
测试显示此属性的作用。(搜索testCustomFilterOrder())
答案 1 :(得分:0)
我发现在SpringBoot 2.0中做到这一点的最好方法是在您的Spring Security Configuration中使用addFilterBefore。我选择在“用户名密码”过滤器之前执行此操作,因为我的过滤器是备用登录过滤器
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilterBefore(new UrlRewriteFilter(), UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/*/**").permitAll()
.antMatchers("/api/login").permitAll()
.antMatchers("/api/**").access("hasRole('ROLE_ADMIN')");
}
}