不涉及太多细节,这是一个高层次的问题。
我一直认为将主键存储在没有约束的地方从来都不是一个好主意。例如,在 EAV 风格架构中存储主键("USER_ID",144)
。如果该用户被删除,它将不会反映在 EAV 映射中,并会导致更远的问题。
所以我正在创建一个使用 shiro 作为security/permission
框架的新应用程序,我需要用户能够编辑自己而不是其他用户,我还需要其他用户能够编辑任何人。很简单:
user1 = "user:441:edit"
user2 = "user:edit"
另外,我可以有一个只能编辑一部分用户的人,像这样
user3 = "user:459:edit","user:460:edit","user:461:edit"
或者,可以编辑某个部门但仅限该部门的用户的人
user4 = "department:5898:user:edit"
如果 user3 列表中的某个人被删除,那么没有魔法就无法更新该用户的权限(遍历所有权限并找到要删除的权限)。
现在我不打算重置密钥,但如果它真的发生并且我不清理旧密钥,我可能会让用户突然能够编辑在重用旧密钥后最近创建的用户。
我可以通过使用在所有表中唯一的生成代码("user:ciS84nFSHK:edit")
来管理权限删除来缓解其中的一些问题。但是,添加几亿条记录让我认为这可能会很快变得笨拙。
我是否不正确地使用 Shiro?我只是过度关注键被破坏了吗?这些问题你解决了吗?任何帮助,将不胜感激。