[英]How to override confirm registration redirect and where email confirmation enabled is checked by FOSUserBundle?
1)FOSUserBundle注冊默認重定向到ConfirmedAction
if (null === $response = $event->getResponse()) {
$url = $this->generateUrl('fos_user_registration_confirmed');
$response = new RedirectResponse($url);
}
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));
return $response;
我想使用REST調用registerAction時覆蓋此行為。 我想返回確認消息,而不是重定向。
FilterUserResponseEvent不允許設置響應,沒有“ setResponse”方法。
2)FOSUserBundle的EmailConfirmationListener也重定向到checkEmail操作
$url = $this->router->generate('fos_user_registration_check_email');
$event->setResponse(new RedirectResponse($url));
我也想覆蓋這個行為。 我可以通過創建具有相同ID“ fos_user.listener.email_confirmation”的EmailConfirmationListener服務並執行此操作
$response = new Response($this->translator->trans('registration.check_email', array(
'%email%' => $user->getEmail()), 'FOSUserBundle'));
$event->setResponse($response);
但是問題是現在下面的配置無法正常工作。 無論以下配置如何,它總是發送確認電子郵件。
fos_user
registration
confirmation
enabled : false
我在EmailConfirmationListerner中看不到任何代碼來檢查是否啟用了此配置。 在哪里檢查,為什么覆蓋偵聽器停止配置工作?
對於第一個問題,應該在FOSUserEvents::REGISTRATION_SUCCESS
而不是FOSUserEvents::REGISTRATION_COMPLETED
上設置自己的重定向響應。 這就是為什么您從分發包粘貼的代碼在創建自己的RedirectResponse之前先檢查是否設置了響應。
對於第二個問題,配置設置的行為是注冊確認偵聽器或跳過捆綁軟件中的注冊。 如果注冊自己的偵聽器,則必須在自己的側面控制自己的偵聽器的注冊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.