Laminas 框架路由问题

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

我目前正在开发 PHP Laminas 框架应用程序,并且遇到了路由问题。

情况是这样的:当用户尝试登录时,如果密码已过期,他们会自动重定向到“

/password-reset
”路线。用户成功更新密码后,他们应该被重定向到“
/login
”路线。但是,即使登录表单正确显示,URL 仍为“
/password-reset
”。

如何解决这个路由问题?

代码

routes.php

'password-reset' => [
            'type' => 'Literal',
            'priority' => 9999,
            'may_terminate' => true,
            'options' => [
                'route' => '/password-reset',
                'defaults' => [
                    'controller' => 'Authentication\Controller\Authentication',
                    'action' => 'password-reset'
                ]
            ]
        ],

密码过期检查并重定向至密码重置页面

loginAction()

if ($passwordExpiryDate['passwordExpiryDate'] && $currentDate >= $passwordExpiryDate['passwordExpiryDate']) {
                return $this->redirect()->toRoute('password-reset');
            } else {
                // login
                $learner = $service->login($data['identity'], $data['password']);
            }

密码重置操作

// get user email
            $userEmail = $post['email'];

            $learnerService = $this->learnerService();
            $userId = $learnerService->getUserIdByEmail($userEmail);

            // validate form
            $data = $form->validate($post);

            // change password and save
            $user = $learnerService->changePassword($userId['userId'], $data);

            // success
            $message['success'] = $this->translate('Password reset successfully. Please return to the login page to continue.');
            if (!$request->isXmlHttpRequest()) {
                $this->flashMessenger()->addSuccessMessage($message['success']);
            }
            return $this->redirect()->toRoute('login');
php routes zend-framework2 laminas
1个回答
0
投票

login
的路线定义是什么样的?

(我对拉米纳斯一无所知,但也许这些额外的信息会帮助其他人解决你的问题。)

© www.soinside.com 2019 - 2024. All rights reserved.