【问题标题】:Bug into fosuserbundle when double click on confirmation link?双击确认链接时出现 fosuserbundle 错误?
【发布时间】:2013-04-07 21:19:53
【问题描述】:

我刚开始使用fosuserbundle,今天我激活了确认注册链接。 效果很好,但是如果用户再次单击电子邮件中的确认链接,他会收到该错误:

确认令牌“3hiqollkisg0s4ck4w8g0gw4soc0wwoo8ko084o4ww4sss8o4”的用户不存在 404 未找到 - NotFoundHttpException

我认为这个错误应该由捆绑包处理,不是吗?

谢谢

【问题讨论】:

  • 遇到同样的问题并寻找解决方案。双击所有内容的愚蠢用户没有余地!
  • 应该是句柄,但不是。在密码请求间隔到期后,双击重置密码链接时也是如此。唯一对我有用的是“覆盖”路由到 fosuser:confirm 操作,以便它路由到我写的操作。基本上覆盖了 fos 用户捆绑控制器的一部分。在我的操作中,我检查确认哈希,如果存在我转发到 fosuserbundle:registration:confirm。如果不是 - 我会回应一些信息。稍后我可以提供一些代码。

标签: fosuserbundle symfony-2.2


【解决方案1】:

这是覆盖操作的代码。基本上只是复制了实际 FOS 动作的一部分并进行了修改。

在您的用户包的控制器文件夹中创建一个 RegistrationController.php 文件,并将覆盖的 RegistrationController 类放在那里。

假设您的用户包是 Acme\UserBundle:

<?php

// Acme\UserBundle\RegistrationController.php

namespace Acme\UserBundle\Controller;

use Symfony\Component\HttpFoundation\RedirectResponse;
use FOS\UserBundle\Controller\RegistrationController as BaseController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class RegistrationController extends BaseController
{
    /**
     * Receive the confirmation token from user email provider, login the user
     */
    public function confirmAction(Request $request, $token)
    {
        $userManager = $this->container->get('fos_user.user_manager');

        $user = $userManager->findUserByConfirmationToken($token);

        if (null === $user) {

            /* ************************************
            *
            * User with token not found. Do whatever you want here
            *
            * e.g. redirect to login: 
            *
            * return new RedirectResponse($this->container->get('router')->generate('fos_user_security_login'));
            *
            **************************************/ 

        }
        else{
            // Token found. Letting the FOSUserBundle's action handle the confirmation 
            return parent::confirmAction($request, $token);
        }
    }
}

【讨论】:

  • 您需要将FOSUserBundle 设为应用程序包的父级see here
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
相关资源
最近更新 更多