FOSUserBundle / Symfony2:强制注销给定用户的用户(不是当前登录的用户)

每当我编辑用户的角色时,用户都需要注销并重新登录才能看到更改.在宣传用户时没有问题,因为他们只有在再次登录之前才会看到额外的权限.但是,当降级发生时,用户仍将保留其现有角色,从而带来安全风险.想象一下,在一个流氓员工上撤销管理员用户,并让他们能够做任何事情(例如破坏系统)直到他们退出!

是否可以使与特定用户相关的所有会话或令牌无效?如果有另一种方法动态更新用户的角色而不将其记录下来,我很乐意听到它!

为了说清楚,我不是试图使当前登录用户的会话/令牌无效.

提前致谢!

最佳答案 Symfony将序列化的令牌对象存储在会话中的_security_match_firewall_name键下.您可以对其进行反序列化,过滤角色,然后再次保存.对于读取/保存会话值,您可以使用PdoSessionStorage.您可能必须创建一个额外的表来跟踪用户会话.

点赞