我正在使用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安全标识?
注意:我见过this similar subject。它没有回答更新问题,而且,在这种情况下执行原始SQL请求是非常不安全的(是的,它也很丑陋)。
答案 0 :(得分:1)
关注此链接:
https://github.com/symfony/symfony/commit/8d39213f4cca19466f84a5656a199eee98602ab1
您必须编写一个Listener,它会更新preUpdate事件的acl。这是上面提交的描述。
格雷茨兹:)