以下是Spring Security角色權限階層(role hierarchy)的Java配置範例。
package com.abc.demo.config.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl;
import org.springframework.security.access.vote.RoleHierarchyVoter;
@Configuration
public class RoleConfig {
@Bean
public RoleHierarchy roleHierarchy() {
RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_MANAGER > ROLE_USER");
return roleHierarchy;
}
@Bean
public RoleHierarchyVoter roleHierarchyVoter(RoleHierarchy roleHierarchy) {
return new RoleHierarchyVoter(roleHierarchy);
}
}
要注意role hierarchy的效果預設僅限於HttpSecurity
的路徑權限配置;而對method security如@Secured
,@PreAuthorize
及@RolesAllowed
並無效果。
參考:
沒有留言:
張貼留言