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