我目前正在测试Spring Security的访问控制列表,并且在阅读了关键概念之后,引起了我的注意:有一个表(ACL_ENTRY)为每个委托人存储每个域对象实例的单独权限(假设该委托人有权访问该实例)。在具有许多用户和许多域对象的大型系统上,我们可以轻松地想象该表中将有很多记录,这些记录很可能会经常被查询(当加载,创建,更新域对象的实例时)等)。现在考虑到这一点,我想知道如何影响表演。有人对此有经验吗?任何反馈?
最佳答案
实际上,我刚刚在接近实时的应用程序上实现了类似的功能。
如果您缓存ACL条目和检索它们的查询结果(例如,每小时仅查询一次),它将大大改善。这里的瓶颈将是您检索权限的方式,而不是实际的授权逻辑。尽管授权逻辑会影响过程,但是如果您在内存对象中处理对象,即使对于实时应用程序也应该是可以接受的。