【问题标题】:Reset password in Symfony 4在 Symfony 4 中重置密码
【发布时间】:2018-07-29 22:28:59
【问题描述】:

我坚持在 Symfony 4 中实现重置密码。在这里,用户在忘记密码表单上插入一封电子邮件,然后他收到一封电子邮件,其中包含指向重置密码表单的链接。我的忘记密码控制器中有以下方法:

/**
 * @Route("/forgot-password", name="forgot_password", defaults={"email=null"})
 * @Method({"GET","POST"})
 * @param Request $request
 * @param AuthenticationUtils $authenticationUtils
 * @param UserPasswordEncoderInterface $passwordEncoder
 * @param $email
 * @return Response
 */
public function forgotpass(Request $request, \Swift_Mailer $mailer)
{
    $form = $this->createForm(ForgotPassType::class);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid())
    {
        $email = $form->getData();
        $users = $this->getDoctrine()
            ->getRepository(Users::class)
            ->findOneBy(array('email' => $email['email']));

            $identifier = random_bytes(10);

                $url = $this->generateUrl('reset_password', array('email'=>$email['email'], 'identifier'=>$identifier));

                return $this->redirectToRoute('url');
}

我正在尝试生成将通过电子邮件发送以重置密码的 URL。 URL 包含电子邮件和带有重置密码链接的标识符。但它显示以下错误

Unable to generate a URL for the named route "http://myweb.test/reset-password?email=email%40gmail.com&identifier=%EEJ8f%A2%DEN%F0%01A" as such route does not exist.

谁能告诉我这里出了什么问题?我生成 URL 的方法可以吗?

提前非常感谢!

【问题讨论】:

    标签: symfony4 reset-password


    【解决方案1】:

    好吧,您没有发布包括路由部分在内的整个方法,但我假设在您的注释中您忘记执行类似 /password/reset/{token} 之类的操作

    @Route("/{id}/edit", name="portofolio_album_edit", methods="GET|POST")
    

    【讨论】:

    • 这个方法? $url = $this->generateUrl('reset_password', array('email'=>$email['email'], 'identifier'=>$identifier));
    • 但是现在我看到了你的控制器方法,名为 reset_password 的路由不存在,所以你必须创建一个新的路由来接受你的参数,然后你必须做逻辑部分.
    猜你喜欢
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2019-07-11
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多