JpC*_*row 3 groovy spring spring-security
我正在尝试在我的应用程序中实现不同的角色,但我无法实现包含/排除不同角色的 URL。
例如,我希望具有角色ROLE_USER和匿名用户的用户可以访问以下端点:
String[] publiclyAccessibleUris = new String[]{ "/home", "/user", "/profile/*", "location/**", "/products/*" };
Run Code Online (Sandbox Code Playgroud)
我希望具有角色的ROLE_DENIED用户只能访问以下端点:
String[] publiclyAccessibleUrisForDenied = new String[]{ "/home", "/profile/*" };
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
http
.sessionManagement()
.sessionCreationPolicy(STATELESS)
.and()
.anonymous()
.and()
.authorizeRequests()
.antMatchers(publiclyAccessibleUris).hasRole("USER")
.anyRequest().permitAll()
.antMatchers(publiclyAccessibleUrisForDenied).hasRole("DENIED")
.anyRequest().permitAll()
.antMatchers("/**").hasRole("DENIED")
.anyRequest().denyAll();
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
最后,我按照以下方式解决了问题,以便允许所有具有 anon o ROLE_USER 的用户使用所有 url,而对于 ROLE_SUSPENDED,我设置了我想要的所有 URL。
http
.sessionManagement().sessionCreationPolicy(STATELESS)
.and()
.anonymous()
.and()
.authorizeRequests()
.antMatchers(publiclyAccessibleUris).permitAll()
.antMatchers(publiclyAccessibleUrisForDenied).access("hasRole('ROLE_DENIED') or hasAuthority('DENIED') OR hasRole('ROLE_USER') or hasAuthority('USER')")
.anyRequest().access("hasRole('ROLE_USER') or hasAuthority('USER')");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |