首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >春季安全:按业务划分的海关机构

春季安全:按业务划分的海关机构
EN

Stack Overflow用户
提问于 2011-03-21 03:44:27
回答 1查看 1.5K关注 0票数 1

我需要让遗留应用程序开始使用spring安全3。

这个应用程序已经有了它的安全数据模型:

到目前为止很简单。我可以编写我的自定义usersByUsernameQueryauthoritiesByUsernameQuery

问题是,还有另一个表指示角色可以执行的操作(即@Service层方法):

因此,管理员可以启用/禁用通过web接口访问操作的角色,而无需重新部署应用程序。

例如,我仍然可以用@Secure('ROLE_ADMIN')对业务方法进行注释,但是我的自定义UserDetailsService至少必须知道被保护的方法名,这样我才能执行正确的查询。

因此,问题是:我的自定义UserDetailsService是否可以拦截正在被保护的方法的名称?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-21 12:37:41

听起来您的访问决定是基于“操作角色”,而不是用户角色,因此在Security约束中直接使用“操作角色”可能更好。这本质上是一种RBAC方法,在用户角色和允许他们执行的操作之间存在映射。

您可以在AuthenticationProvider而不是UserDetailsService中解决这个问题,方法是在其中添加一个映射层,将用户角色(由UserDetailsService提供)转换为用户在应用程序中拥有的权限。这些将构成在由Authentication创建的AuthenticationProvider对象中返回的权限的集合。

映射层将直接使用您的管理接口提供的数据。

你可能想看看这份报告,由Mike,其中涵盖了类似的材料,以及其他事情。

也不是说SpringSecurity3.1将包含额外的GrantedAuthorityMapper策略,以便更容易地插入这类映射。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5373612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档