加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何强制注销Symfony中的用户?

发布时间:2020-12-13 21:58:08 所属栏目:PHP教程 来源:网络整理
导读:我有一个User实体,它有一个布尔列isActivated.根据每个用户的列值,他可能会或可能无法登录(即他没有激活他的帐户,因此无法登录).我通过在防火墙中分配一个simple_form.authenticator来检查每次登录时实现了这一点. 我正在试图弄清楚当用户仍在进入时如何强制
我有一个User实体,它有一个布尔列isActivated.根据每个用户的列值,他可能会或可能无法登录(即他没有激活他的帐户,因此无法登录).我通过在防火墙中分配一个simple_form.authenticator来检查每次登录时实现了这一点.

我正在试图弄清楚当用户仍在进入时如何强制注销用户.
请考虑以下情形:

>用户在其帐户仍处于活动状态时登录.
>管理员停用用户的帐户.
>用户已退出,因为它已不再处于活动状态.

不幸的是,第3步没有发生.原因可能在于用户已经收到令牌,并且被Symfony 2.5的防火墙视为“篡改”(可能是令牌被缓存在安全上下文中?).

我想知道克服这个问题的最佳方法是什么?我应该编写内核事件监听器还是Custom User Provider?

解决方法

您可以使用以下两行终止用户的会话(如果您有权访问容器,否则必须注入security.context和session):

$container->get('security.context')->setToken(null);
$container->get('session')->invalidate();

之后,用户应该注销.

如果您之前加载了用户实体,您也可能想要取消设置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读