cakephp 成功登录后,我希望被重定向到登录前所在的屏幕,getLoginRedirect()不起作用

ctehm74n  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(184)

假设您在用户列表屏幕中。从那里您将进入登录屏幕进行登录。在那里,您将输入您的电子邮件和密码,并输入提交按钮。您已成功登录。如果登录成功,我们希望被重定向到用户列表屏幕。
如果您在用户详细信息屏幕中,您将被重定向到用户详细信息屏幕。如果用户在编辑屏幕中,则为用户编辑屏幕
我已经阅读了book.cakephp.org上的AuthenticationPlugin文档。在那里我学会了使用getLoginRedirect()来实现此功能。
我知道,一旦我在下面的步骤中进行了设置,我想做的事情就会发生。
不过,getLoginRedirect()会传回null。
我需要做什么?我错过了什么?出什么事了?
第一个
我想我已经公开了与getLoginRedirect()相关的所有内容。如果有什么遗漏或您感兴趣的内容,请随时告诉我。
请帮帮我,请帮帮我...

tyky79it

tyky79it1#

插件提供的登录重定向功能仅在您在未登录的情况下访问需要身份验证的URL后被重定向到登录URL时才自动工作。在这种情况下,身份验证中间件将使用当前URL设置redirect查询字符串变量,以便组件可以在重定向到登录URL后获取该变量。
如果您手动访问登录URL,那么您还需要手动设置redirect查询字符串变量,即在您的菜单中,在您构建的链接中,将当前URL添加到查询字符串中,大致如下:

$service = $this->request->getAttribute('authentication');
// here `$queryParam` would by default be `redirect`
$queryParam = $service->getConfig('queryParam');

echo $this->Html->link('Login', [
    'plugin' => null,
    'prefix' => false,
    'controller' => 'Users',
    'action' => 'login',
    '?' => [
        $queryParam => $this->request->getRequestTarget(),
    ],
]);

因此,如果您在/users/show上,登录链接的URL将类似于:

/login?redirect=/users/show

并且构建登录表单的表单帮助程序应该获取该URL,以便在提交表单后,身份验证组件可以相应地从当前URL读取重定向URL。
另请参阅

*Cookbook〉视图〉帮助程序〉Html〉创建链接

相关问题