我了解,要使用 Spring 安全 ACL,我们在数据库中创建 4 个强制表 (acl_*)。当创建一个新对象时,在表“acl_object_identity”中创建条目,并且安全授权规则在表“acl_entry”中,例如哪个用户/角色可以读取/写入对象。当任何用户尝试获取或更新对象时,这些规则稍后会被验证。
在网上的大部分例子中,表中的条目都是通过SQL完成的,在生产中不会总是这样 问题是关于插入?我认为在对象创建点(控制器中的这种 POST 方法)需要两件事:
- 检查用户是否有权创建对象,这可以使用 Spring security 而不是 spring security acl 来完成
- 在 acl_object_identity 和 acl_entry 表中插入条目。这是额外的代码(在 spring 安全 acl 代码之外),并且在(理想情况下)与在数据库中插入新对象相同的事务中完成
完成上述两个操作后,在验证读取/更新(对先前创建的对象的 GET、PUT、DELETE 等)请求时使用 spring security acl。
我的理解正确吗?