Spring Security antMatchers 正则表达式

Posted

技术标签:

【中文标题】Spring Security antMatchers 正则表达式【英文标题】:Spring Security antMatchers Regex 【发布时间】:2018-07-17 05:14:45 【问题描述】:

我的 spring 安全配置中已经有 antmatchers() 使用通配符。我需要从这个通配符中过滤掉“表格”。 这是我的原始代码:

    .antMatchers("/api/keepSessionAlive").authenticated()
    .antMatchers("/api/users/**").authenticated()

我尝试将通配符更改为正则表达式,如下所示,但它对我不起作用:

   .antMatchers("/api/users/(?!forms).*").authenticated() 

任何帮助将不胜感激

【问题讨论】:

请提供一些您想匹配的网址示例。仅仅说它不起作用是不够的 How to put a URL with a regular expression in Spring Java based configuration的可能重复 如果您坚持使用antMatchers,请查看***.com/questions/27649649/…,但这是针对更具体的情况。 【参考方案1】:

请在“/users/**”antMatchers 之前添加“/users/forms”过滤器

.antMatchers("/api/keepSessionAlive").authenticated()
.antMatchers("/api/users/forms/**").authenticated() 
.antMatchers("/api/users/**").authenticated()

【讨论】:

【参考方案2】:

只需在其他人之前为“form”添加一个antmatcher,并将其保持为permit-all,如下所示:

.antMatchers("/api/users/form").permitAll()
.antMatchers("/api/keepSessionAlive").authenticated()
.antMatchers("/api/users/forms/**").authenticated() 
.antMatchers("/api/users/**").authenticated()

希望这会有所帮助。

【讨论】:

以上是关于Spring Security antMatchers 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 在运行时动态添加/删除 antMatchers 和角色

Spring security antMatcher 未按预期工作

Spring Security:antMatcher 的序列未按预期工作 [重复]

Spring Security:所有端点返回状态 200 并且对约束没有响应作为 antMatchers

Spring security antMatchers permitAll 不起作用

使用 AngularJS 和 Spring Security 的单页应用程序中需要 AntMatchers