【发布时间】:2015-03-04 04:16:22
【问题描述】:
我正在使用 FOSUserBundle 来处理我的应用用户。用户可以更新他们的用户名或被管理员删除。在那方面一切都很好,我的问题与 Symfony ACL 有关。
每个用户在创建时都有自己的安全实体。例如,如果我使用 shigeno 用户名创建一个帐户,它会在数据库(acl_security_identities 表)中产生类似的结果:
id | identifier | username
... | ... | ...
23 | my\Bundle\Entity\User-shigeno | 1
(ACL 身份使用用户名!哎呀...为什么不用 id?)
现在,我,shigeno,将我的用户名更改为 honda。 Acl_security_identities 表保持原样,所以我的所有权限都被删除了(或者更准确地说,他们没有和我一起移动)。
当然,我可以添加新的 ACL。但是:
- 这很痛苦。我必须复制所有以前的 ACL,更不用说在更新或删除用户时我无法轻松访问所有安全对象。
- 这是一个很大的安全漏洞,因为如果没有删除以前的 ACL 并且新来宾选择了用户名 shigeno...BAM,圣诞节快到了。
如何更新(如果我删除用户则删除)ACL 安全身份?
注意:我见过this similar subject。它没有回答更新问题,此外,在这种情况下执行原始 SQL 请求是非常不安全的(是的,它也很丑陋)。
【问题讨论】: