You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在用户提交密码重置请求时刷新fos_user令牌及配置新令牌生成?

FOSUserBundle 密码重置令牌刷新与配置说明

手动刷新并生成新令牌的操作步骤

当处理用户的密码重置请求(resetting/request)时,可按以下步骤手动刷新令牌:

  • 通过邮箱或用户名查询到对应的用户实体
  • 生成安全的唯一令牌,替换用户现有令牌:
    // 生成符合URL安全标准的随机令牌
    $token = rtrim(strtr(base64_encode(random_bytes(32)), '+/', '-_'), '=');
    $user->setConfirmationToken($token);
    
  • 更新密码重置请求的时间戳,保证令牌有效期计算准确:
    $user->setPasswordRequestedAt(new \DateTime());
    
  • 将更新后的用户实体持久化到数据库:
    $entityManager = $this->getDoctrine()->getManager();
    $entityManager->persist($user);
    $entityManager->flush();
    
  • 调用FOSUser内置邮件服务,发送包含新令牌的重置邮件:
    $mailer = $this->get('fos_user.mailer');
    $mailer->sendResettingEmailMessage($user);
    

配置项控制每次请求生成新令牌

在FOSUserBundle的配置文件(通常为config/packages/fos_user.yaml)中,找到resetting节点,设置always_generate_new_token为true即可。开启该配置后,每次用户提交密码重置请求时,系统会自动生成新令牌并覆盖旧令牌:

fos_user:
  # 其他配置(如用户类、防火墙映射等)...
  resetting:
    token_ttl: 86400 # 令牌有效期,单位:秒
    always_generate_new_token: true # 控制每次请求生成新令牌的核心配置
    email:
      template: '@FOSUser/Resetting/email.txt.twig' # 重置邮件模板路径

内容的提问来源于stack exchange,提问作者Dev Git

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:42:48