禁止用户使用 fosuserBundle 在 Symfony2 中访问彼此的帐户

forbidding users from accessing each others accounts in Symfony2 using fosuserBundle

我想知道我应该如何自定义防火墙,以便用户无法使用 fosUser Bundle 访问除他们之外的任何配置文件

我认为您在这里混淆了问题。 FOSUserBundle 允许您管理用户和常见的 用户管理 任务(重置密码等)。

另一方面,防火墙 是 Symfony 安全组件的一部分,它决定您是否经过足够的身份验证访问给定资源。

但我认为你真正想要的是authorisation资源,这也是安全组件的一部分,但它不是防火墙。这个想法是,一旦您通过了防火墙,就会向当前用户授予一个身份验证令牌。请注意,此令牌也可能意味着用户根本未通过身份验证。这个 Token 对于你想做的事情非常有用,这基本上是决定当前用户是否可以访问给定的资源。

这将我们引向 Voters。投票者是给定令牌的逻辑单元,一些元数据能够确定令牌是否被授权用于该资源。

所以归根结底,如果您是 运行 多租户应用程序,一个常见的模式是将几乎每个实体关联到它所属的 account/user。然后检查当前用户是否有权限 view/edit/remove 它应该是微不足道的。