我正在开发一个使用 Spring Security ACL 插件保护资源的 Grails 项目。此应用程序还允许资源所有者将权限委派给其他用户,这些用户可以进一步以病毒方式将他们的权限委派给其他用户。
这适用于标准 Spring ACL API,但现在我有新要求:
- 跟踪谁授予/委派了给定权限[用户应该能够查看他/她对给定资源的权限以及他/她为该资源委派的所有其他用户权限]。
- 通过设置一个标志来指示此权限是否可以进一步委派,从而控制被授权者的病毒委托。
我计划通过向 ACL_ENTRY 表添加两个附加字段 [1.grantee (SID), 2.isDelegatable] 来支持这些要求。
我想知道它是否会影响任何 Spring ACL 核心功能。如何使用标准 Spring ACL API 访问这些字段?我可以转换为自定义 Permission 对象并访问那些扩展字段吗?
我们还计划支持仅在给定的开始和结束时间范围内适用的基于时间的过期权限。我应该在哪里添加此验证逻辑,以便 hasPermission() 方法调用考虑授予权限的时间有效性?请指教。