从应用程序属性中将角色列表注入@PreAuthorize

时间:2018-05-24 11:10:09

标签: java spring spring-boot spring-security authorization

SPEL有什么技巧,所以我可以在application.yml中定义我的管理员角色,然后直接加载到以下内容:

@PreAuthorize("hasAnyRole(${my.security.admin-roles-list})")

...

1 个答案:

答案 0 :(得分:1)

您可以使用技巧从@PreAuthorize批注访问bean:

application.properties

my.security.admin-roles-list=RoleA,RoleB,RoleC

@Component("securityConfiguration")
public class SecurityConfiguration {

    @Value("#{'${my.security.admin-roles-list}'.split(',')}") 
    private List<String> adminRoles;

    public List<String> getAdminRoles() {
        return adminRoles;
    }
}

然后使用它:

@PreAuthorize("hasAnyRole(@securityConfiguration.getAdminRoles())")