在Symfony2中注销时设置新的安全令牌

时间:2014-09-22 15:23:58

标签: security symfony authentication

我使用Symfony 2.4和FOSUserBundle。

管理员用户可以将其安全令牌切换为任何其他用户的安全令牌,因此他可以登录系统中的任何帐户。我已经用以下代码完成了它:

$newToken = new MyOwnToken($adminId, $user, null, 'main', $user->getRoles());
$this->get('security.context')->setToken($newToken);

MyOwnToken扩展常规UsernamePasswordToken,持有额外的adminId字段(以供原始管理员帐户参考)。

当管理员注销常规用户帐户时,将取消设置安全令牌并将其重定向到登录页面。我想稍微改变一下:我不想退出,而是希望管理员在他的管理帐户中重新登录。

我的问题是:如果满足某些条件(例如当前令牌是MyOwnToken的实例),我需要阻止注销,并将令牌切换到另一个?

1 个答案:

答案 0 :(得分:1)

你应该一起使用不同的方法。它被称为“模仿”用户,并在此处的文档中进行了描述 - http://symfony.com/doc/current/cookbook/security/impersonating_user.html