gpt4 book ai didi

CakePHP 身份验证中间件未调用

转载 作者:行者123 更新时间:2023-12-04 10:51:04 25 4
gpt4 key购买 nike

我经常使用 AuthComponent,但我是 AuthenticationMiddleware 的新手。我几乎完全按照 https://book.cakephp.org/authentication/2/en/index.html除了用户名字段是用户名而不是电子邮件。但是当我尝试获取需要身份验证的页面时,Cake 在 AuthenticationComponent::doIdentityCheck() 中抛出 UnauthenticatedException。这可以理解,因为 Cake 应该将我重定向到/users/login,但它没有。我试过

$service->loadAuthenticator('Authentication.Form', [
'loginUrl' => '/users/login' // case 1
// or case 2 'loginUrl' => \Cake\Routing\Router::url('/users/login'),
// or case 3 omit this to use the default

在上述所有情况下,Cakes 会抛出 UnauthenticatedException 并显示以下消息:

没有找到身份。您可以通过将 requireIdentity 配置为 false 来跳过此检查。

还有 http://localhost:8765/users/login引导我到正确的页面,我也可以通过 http://localhost:8765/users/ 查看用户列表如果我允许未经身份验证如下:
// UsersController.php
public function initialize() : void {
parent::initialize();
$this->Authentication->allowUnauthenticated(['index', 'login']);
}

我的环境:CakePHP 4.0,认证插件2.0。有没有办法验证 AuthenticationMiddleware 确实已设置并添加到中间件队列中?

最佳答案

如果中间件没有运行,你会得到一个不同的错误,一个会提示 authentication 的错误。请求对象上缺少属性。

您需要配置unauthenticatedRedirect服务对象上的选项,以便为未经身份验证的请求发出重定向,如果没有配置该选项,您将收到异常。此外,您可能需要设置 queryParam选项(这是将保存最初访问的 URL 的查询字符串参数),如果您希望能够在成功登录后重定向用户。

$service->setConfig([
'unauthenticatedRedirect' => '/users/login',
'queryParam' => 'redirect',
]);

文档中似乎缺少这一点,只有 mentioned in the migration notes .您可能想为该问题打开一个问题 over at GitHub .快速入门指南示例已更新以包含重定向配置。

关于CakePHP 身份验证中间件未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59469552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com