【发布时间】:2018-05-02 05:16:45
【问题描述】:
我们在需要用户访问权限的 URL 上有信息包,布局如下:
- /InfoPacks/InfoPack1/
- /InfoPacks/InfoPack2/
- 等
用户需要 ROLE_INFOPACK1 才能访问 /InfoPacks/InfoPack1/ 和 ROLE_INFOPACK2 才能访问 /InfoPacks/InfoPack2/ 等。
我们一直在添加包,因此将添加到 WebSecurityConfig() .antMatchers("/InfoPacks/InfoPack1/**/*").hasAuthority("ROLE_INFOPACK1) 并不是一个真正的参与者,因为它意味着每次创建新包时都要修改和重新部署,而安全配置中的配置方法越来越大。
自定义评估器会更好。例如可以调用服务的东西 喜欢:
hasPermission(Authentication auth, String targetURL) {
// search auth.GrantAuthorities for a match to targetURL
}
我看到了这种与 PreAuthorize 一起使用的自定义权限表达式示例,但似乎不是使用 URL authorizeRequests() 执行此操作的方法。 (至少在版本 4 中)。
非常欢迎任何指点。
【问题讨论】:
标签: spring-security