【问题标题】:Remove authenticated user from context Symfony从上下文 Symfony 中删除经过身份验证的用户
【发布时间】:2016-01-28 09:59:02
【问题描述】:

我想知道如何删除刚刚通过身份验证的用户的说明,就像没有用户通过身份验证一样。

我应该删除会话的内容还是有合适的方法?

【问题讨论】:

  • 你想达到什么目的?基本上,您想在用户登录后立即注销?
  • 如果验证成功:如果密码超过 3 个月,我会强制更改它,但我希望用户不要进行身份验证。他将不得不使用新密码重新登录
  • 未通过身份验证的用户更改密码一定很棘手。

标签: php symfony


【解决方案1】:

你可以试试这个:

$this->get('security.token_storage')->setToken(null);
$this->get('request')->getSession()->invalidate();

【讨论】:

    【解决方案2】:

    基本上,如果密码超过 3 个月,您需要强制用户访问change password 站点。只要他不更改密码,他应该除了更改密码之外别无他法。

    您不能破坏身份验证,因为如果用户未通过身份验证,他将永远无法更改密码。

    用户更改密码后,您可以将他注销并将他重定向回主页或登录页面。

    要将用户从您的系统中注销,您需要使他的令牌和会话无效。 您可以在此question 中找到有关手动注销用户的更多信息。

    // manual logout 
    $this->get('security.token_storage')->setToken(null);
    $this->get('request')->getSession()->invalidate();
    

    因此,此代码将被放置在密码更改表单的 $form->isValid() 部分中。

    【讨论】:

    • 我明白你的意思,但在我的情况下他可以做到,我想重新登录
    猜你喜欢
    • 1970-01-01
    • 2016-01-17
    • 2017-11-27
    • 2020-09-18
    • 2021-02-28
    • 2021-01-15
    • 2013-11-11
    • 2020-11-15
    相关资源
    最近更新 更多