Pet*_*res 5 spring spring-security spring-boot
在 Spring Boot 2.7.x 中,我使用了RoleHierarchyVoter
public RoleHierarchy roleHierarchy() {
RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMINISTRATOR > ROLE_USER > ROLE_GUEST");
return roleHierarchy;
}
@Bean
public RoleHierarchyVoter roleVoter() {
return new RoleHierarchyVoter(roleHierarchy());
}
Run Code Online (Sandbox Code Playgroud)
在 Spring Boot 3.x 中已弃用 -建议AccessDecisionVoter使用。AuthorizationManager是否有可能使用 AuthorizationManager-Implementation 来设置角色层次结构?的用法
@Bean
AccessDecisionVoter hierarchyVoter() {
RoleHierarchy hierarchy = new RoleHierarchyImpl();
hierarchy.setHierarchy("ROLE_ADMIN > ROLE_STAFF > ROLE_USER" +
"ROLE_USER > ROLE_GUEST");
return new RoleHierarchyVoter(hierarchy);
}
Run Code Online (Sandbox Code Playgroud)
自从我使用以来就没有工作AuthorizationFilter。
只需暴露一个expressionHandlerbean 就可以完成这项工作。
如果您使用方法 security ( @EnableMethodSecurity) :
@Bean
public RoleHierarchyImpl roleHierarchy() {
final RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_STAFF > ROLE_USER > ROLE_GUEST");
return roleHierarchy;
}
@Bean
public DefaultMethodSecurityExpressionHandler expressionHandler() {
DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
expressionHandler.setRoleHierarchy(roleHierarchy());
return expressionHandler;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用网络安全 ( @EnableWebSecurity) :
@Bean
public RoleHierarchyImpl roleHierarchy() {
final RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_STAFF > ROLE_USER > ROLE_GUEST");
return roleHierarchy;
}
@Bean
public DefaultWebSecurityExpressionHandler expressionHandler() {
DefaultWebSecurityExpressionHandler expressionHandler = new DefaultWebSecurityExpressionHandler();
expressionHandler.setRoleHierarchy(roleHierarchy());
return expressionHandler;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2994 次 |
| 最近记录: |