这个问题在这里已有答案:
我有两条路:
/api/posts/{postId}
/api/posts/myPosts
我想允许所有第一个路径,并保护角色USER的第二个路径。
我试过下面的模式但是当我添加第一个模式时,第二个停止工作(即使他没有USER角色,用户也可以获得myPosts)。我做错了什么?
.antMatchers(HttpMethod.GET, "/api/posts/{postId}").permitAll()
.antMatchers(HttpMethod.GET, "/api/posts/myPosts").hasRole("USER")
问题在于您的规则。撤销订单将有效。
.antMatchers(HttpMethod.GET, "/api/posts/myPosts").hasRole("USER")
.antMatchers(HttpMethod.GET, "/api/posts/{postId}").permitAll()
这里的事情是你必须指定所有路径都经过身份验证,因为它不是HttpSecurity对象的默认实现。
.antMatchers(HttpMethod.GET, "/api/posts/{postId}").permitAll()
.antMatchers(HttpMethod.GET, "/api/posts/myPosts").hasRole("USER")
.anyRequest().authenticated()
我建议在baeldung这里查看这个link,他们简要介绍一下Spring Security。