- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两种配置:
@订单(1)
@Override
protected void configure(HttpSecurity http) throws Exception {
http.antMatcher("/api/**")
.authorizeRequests()
.anyRequest().hasRole("USER")
.and()
.httpBasic()
.and()
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling()
.authenticationEntryPoint(new ApiAuthenticationEntryPoint(objectMapper));
}
@订单(2)
http.authorizeRequests()
.antMatchers("/product/**").hasRole(SecurityRoles.USER)
.and()
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/authenticateTheUser")
.successHandler(customAuthenticationSuccessHandler)
.permitAll()
.and()
.logout()
.permitAll()
.and()
.exceptionHandling()
.accessDeniedPage("/access-denied");
我需要添加功能以在无需身份验证的情况下使用 REST 端点 /api/users
注册新用户。其他 /api/**
端点应保留基本身份验证。这个怎么做?我看不到 antMatcher
方法以及选择 http 方法类型的选项。
编辑:
我需要这样的东西:
http.antMatcher("/api/users", HttpMethod.POST.toString).permitAll()
.and()
.antMatcher("/api/**")
.authorizeRequests()
.anyRequest().hasRole("USER")
(...)
最佳答案
您可以使用 antMatchers()
来做到这一点:
http
.antMatcher("/api/**")
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/api/user").permitAll()
.anyRequest().hasRole("USER")
antMatcher(..)
和 antMatchers(..)
之间的区别在于,当您有单独的安全配置类。当您需要区分以下内容时,这可能是必要的:
另一方面,antMatchers(..)
(在authorizeRequests(..)
内)用于区分授权级别(哪些角色可以访问某些端点)。
在您的情况下,配置属于后者,因为您只需要区分 POST/api/user
端点的权限。
但是,如果您确实需要更精细地控制应应用哪个安全配置类,那么您应该使用 RequestMatcher
正如评论中提到的。
此接口(interface)有一个 HttpServletRequest
参数,并期望您返回一个 boolean
。由于 HttpServletRequest
包含您需要的所有信息,例如路径和 HTTP 方法,因此您可以正确调整应应用哪个配置类。但是,在这种情况下没有必要。
关于java - Spring Security - antMatcher 的 POST 方法(不是 antMatchers),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55338789/
这个问题已经有答案了: When to use Spring Security`s antMatcher()? (2 个回答) 已关闭 3 年前。 我正在学习 Spring Security,我从 h
只是想看看我是否在解释 answer to this question正确的方法。 如果我们只需要像这样保护一条路径: http.antMatcher("/api/**").authorizeRequ
我有两种配置: @订单(1) @Override protected void configure(HttpSecurity http) throws Exception { http.ant
我有将用于身份验证的 REST 服务。身份验证端点将类似于 /api/v.1/authentication . API 版本是一个可以更改以反射(reflect)更新版本的变量。一个例子是 /api/
我有一个我想提供给 antMatchers() 的路径列表.但是由于这个列表是动态的,我不能提供逗号分隔的路径。我目前正在遍历列表并将 eachPath 添加到 antMatcher() .有没有更好
我有我的自定义 Controller "/my-endpoint" 和具有以下配置的 spring 应用程序: @Override public void configure(Http
我正在学习spring-boot,对于我的大脑来说,为了接受一些东西,它需要对这些东西找到一个有意义的解释。有人能告诉我“antMatchers”中的“ant”是什么意思吗?像“ Ant ”这样的昆虫
我有一个基本的 Spring 应用程序,它具有各种端点和一个登录页面,通过配置 WebSecurityConfigurerAdapter 的 HttpSecurity 来定义。 我有一个服务,可以查找
我有以下 spring 安全配置片段: http .authorizeRequests() .antMatchers("/tokens").hasIpAddress("10.0.0.0/1
我有以下可用的 spring security java config rule(3.2.4 版): http.antMatcher("/lti1p/**") .addFilterBefore
我在内容管理系统上工作,它有五个 antMatchers,如下所示: http.authorizeRequests() .antMatchers("/", "/*.html").per
我知道有这个问题的主题,但我所做的配置是正确的,我将它与它正常工作的项目进行了比较。我想“解除”JWT 安全性的/login 端点,但 AuthenticationFilter 仍然在到达/login
这是我配置 spring security 的方式,在 Controller 中我获得 ROLE_ANONYMOUS 作为权限。看起来安全性并没有拦截请求并检查 JWT。如何配置antmatcher.
编辑: 我进一步深入研究了问题,发现即使使用单一配置,问题仍然存在。如果我使用单一配置并保留 http.antMatcher("/api/test/**") 网址不安全。删除 antMatcher 和
我想在 .antmatchers.access(): 中使用 AuthoritiesConstants.java 中的一些常量: .antMatchers("/first/**").access("h
编辑: 我进一步深入研究了问题,发现即使使用单一配置,问题仍然存在。如果我使用单一配置并保留 http.antMatcher("/api/test/**") 网址不安全。删除 antMatcher 和
我定义了一个自定义过滤器,我在 BasicAutenticationFilter 之后添加... 问题是,当我 ping 我的微服务时(在这种情况下通过 Rancher 的健康检查)它总是进入过滤器,
我试图忽略身份验证中的 url 我尝试了多种不同的模式,但 java 似乎无法识别它们。我的配置如下所示: @Override public void configure(WebSecurit
Spring security oauth 实现中有一个常见的做法是使用以下行来保护 oauth 端点: .requestMatchers().antMatchers("/login", "/oaut
我使用正确的凭据登录为“CHILD”,因此它与“USER”角色不同。当我将带有 token 的 get 请求发送到 http://localhost:8081/iam/accounts/users 时
我是一名优秀的程序员,十分优秀!