我想使用Apache Shiro框架来保护我的Web应用程序(UI基于Vaadin 6)。我查看了Shiro网站上的所有示例,并进行了几个小时的搜索,但我无法找到处理以下要求的清晰方法。
假设应用程序是一种项目管理工具,用户正在创建活动,这些活动属于公司层次结构中的特定部门。每个用户可能在多个部门中工作,并且在每个部门中具有不同的安全角色。例如:
Department A - 用户在此处为“经理” Department B Department C - 用户在此处为“管理员” Department D
用户在A部门中是“经理” 用户在C部门中是“管理员” 用户还应继承D部门的“管理员”角色(它是C部门的祖先)。
因此,基本权限检查(假设我要查看属于某个部门的活动)将是:
- 检查用户尝试查看的活动是否属于用户具有角色的部门;
- 检查用户是否具有所需的权限,以基于他在此部门中的角色为依据。
我目前遇到了一个理解问题,即如何实现不仅仅是“系统范围内角色”,而也是“此特定部门中的角色”的概念。
我该如何将上述示例转换为类似于“activity:view:123”这样的权限字符串?我在业务逻辑中将如何检查权限?
另一个疑问是关于Shiro的实现,我想使用一些开箱即用的解决方案,让我自己提供最少的实现工作。但是,看起来Shiro内置的实现仅适用于简单情况。是否有任何复杂授权实现的示例可供参考(可以覆盖上述情况)?