表单提交后,FOS用户包未重定向到fos_user_registeration_check_email

问题描述 投票:1回答:1

我在config.yml中设置了registration: confirmation: enabled: true,所以一切正常,只要发送的电子邮件和用户关注链接,但问题是,在提交注册表单后,它会重定向到登录页面。看着_profiler我也没有看到任何对/register/check-email的请求。我正在使用FOS Userbundle v2.1.2和symfony 3.4.14。

我正在使用第三方php脚本,我觉得在services.yml或config.yml中有一个选项我可以设置告诉它重定向以呈现check_email.html.twig,但我不确定它是什么。我实际上删除了整个checkEmailAction方法,我怀疑这是处理请求的方法,它没有任何效果,电子邮件仍然被发送和相同的行为。

checkEmailAction(方法)

  /**
     * Tell the user to check their email provider.
     */
    public function checkEmailAction(Request $request)
    {
        $email = $request->getSession()->get('fos_user_send_confirmation_email/email');

        if (empty($email)) {
            return new RedirectResponse($this->generateUrl('fos_user_registration_register'));
        }

        $request->getSession()->remove('fos_user_send_confirmation_email/email');
        $user = $this->userManager->findUserByEmail($email);

        if (null === $user) {
            return new RedirectResponse($this->container->get('router')->generate('fos_user_security_login'));
        }

        return $this->render('@FOSUser/Registration/check_email.html.twig', array(
            'user' => $user,
        ));
    }

register_content.html.twig

{% trans_default_domain 'FOSUserBundle' %}

{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}}) }}
    {{ form_widget(form) }}
    <div>
        <input type="submit" value="{{ 'registration.submit'|trans }}" />
    </div>
{{ form_end(form) }}

它正在使用Swiftmailer发送电子邮件,所以我想可能需要有一个附加到swiftmailer的监听器,但我不确定。

路线

<route id="fos_user_registration_check_email" path="/check-email" methods="GET">
    <default key="_controller">fos_user.registration.controller:checkEmailAction</default>
</route>

另外,对于/ register,我的security.yml中的角色是IS_AUTHENTICATED ANONYMOUSLY

访问控制(security.yml)

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/account, role: IS_AUTHENTICATED_FULLY }
php symfony composer-php fosuserbundle
1个回答
0
投票

在您的配置中,您是否已设置/注册/检查电子邮件以进行匿名访问?

就像是

security:
    access_control:
        - { path: ^/register/check-email, roles: IS_AUTHENTICATED_ANONYMOUSLY }
© www.soinside.com 2019 - 2024. All rights reserved.