9

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

当用户登录并且我删除了用户的角​​色时,用户仍然可以访问他实际上不再被允许访问的内容,因为他缺少角色。仅当用户通过注销/登录重新验证自己时,更改才会生效。

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

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

4

2 回答 2

11

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

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

于 2013-02-27T17:50:10.193 回答
-1

您可以通过遵循类似于我所做的方法来解决此问题:

  1. 当用户登录时,将所有权限连同这些权限的校验和一起存储在会话中。
  2. 根据该用户 ID 在数据库或磁盘上存储相同的校验和
  3. 每当用户发出请求时,验证磁盘上的校验和是否与该用户的会话中的校验和相匹配。如果不同,则将权限重新加载到用户的会话中
  4. 当您更改权限时,请更新针对该用户存储的数据库(或磁盘上)中的校验和。这将触发他们下一个请求的重新同步。
于 2013-02-27T17:03:37.083 回答