用户权限更改后强制重新认证

时间:2013-02-27 15:29:08

标签: symfony symfony-2.1 fosuserbundle

在我的应用程序中,我可以在后端更改用户权限和角色。

当用户登录并删除用户的角色时,用户仍然可以访问实际上不允许访问的内容,因为他错过了该角色。仅当用户使用logout / login重新验证自己时,更改才会生效。

所以我的问题是,我可以访问登录用户的会话(不是我)吗?我知道我可以访问我自己的会话并销毁它,迫使我再次登录。但我希望得到任何登录用户的会话。这可能吗?我找不到任何相关的资源。

我将PdoSessionStorage与symfony2.1和fosuserbundle一起使用。

2 个答案:

答案 0 :(得分:9)

让您的用户类实现Symfony\Component\Security\Core\User\EquatableInterface

如果从false方法返回isEqualTo(),则会重新验证用户。使用该方法仅比较那些在更改时应强制重新认证的属性 - 在您的情况下为角色。

答案 1 :(得分:-1)

您可以按照与我所做的类似的方法解决此问题:

  1. 当用户登录时,将会话中的所有权限与这些权限的校验和一起存储。
  2. 将相同的校验和存储在数据库或磁盘上,以防止该用户ID
  3. 每当用户发出请求时,请验证磁盘上的校验和是否与该用户的会话中的校验和匹配。如果不同,请将权限重新加载到用户的会话中
  4. 更改权限时,更新针对该用户存储的数据库(或磁盘)中的校验和。这将在下一次请求时触发重新同步。