我在 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 }
答案 0 :(得分:0)
在您的配置中,您是否设置了/ register / check-email以进行匿名访问?
类似
security:
access_control:
- { path: ^/register/check-email, roles: IS_AUTHENTICATED_ANONYMOUSLY }