Cakephp 3 身份验证插件,登录 URL 不匹配

2023-12-11

我想使用 CakePHP 3.8 的身份验证插件,但我遇到了文档中没有的问题。

之后按照入门 (https://book.cakephp.org/authentication/1/en/index.html) 我有一个问题。

最初指定 $fields 来更改真实数据库中的用户名和密码关系,与 Auth 组件相同,登录 URL 是加载登录表单的位置。

首先,在入门或文档的任何部分中都没有提到登录视图(表单),因此,就像旧的身份验证组件一样,我将其创建到 Users/login.ctp

<div class="users form">
    <?= $this->Flash->render('auth') ?>
    <?= $this->Form->create() ?>
    <fieldset>
        <legend><?= __('Please enter your email and password') ?></legend>
        <?= $this->Form->input('email') ?>
        <?= $this->Form->input('password') ?>
    </fieldset>
    <?= $this->Form->button(__('Login')); ?>
    <?= $this->Form->end() ?>
</div>

我在 Application.php 中的代码包括这个(及其各自的用途和实现):

    public function getAuthenticationService(ServerRequestInterface $request, ResponseInterface $response)
    {
        $service = new AuthenticationService();

        $fields = [
            'username' => 'email',
            'password' => 'password'
        ];

        // Load identifiers
        $service->loadIdentifier('Authentication.Password', compact('fields'));

        // Load the authenticators, you want session first
        $service->loadAuthenticator('Authentication.Session');
        $service->loadAuthenticator('Authentication.Form', [
            'fields' => $fields,
            'loginUrl' => '/users/login'
        ]);

        return $service;
    }

但是当我尝试登录时,我遇到了这个错误,在 login.ctp 中的 var_dump 之后我得到了这个:

object(Authentication\Authenticator\Result)[124]
  protected '_status' => string 'FAILURE_OTHER' (length=13)
  protected '_data' => null
  protected '_errors' => 
    array (size=1)
      0 => string 'Login URL `http://localhost/users/login` did not match `/users/login`.' (length=70)

如果我评论'loginUrl' => '/users/login'行,然后登录就可以正常工作了。

补充笔记: - 我已经使用散列密码和文本平面密码进行了测试,结果相同。 - 我已经添加$this->Authentication->allowUnauthenticated(['view', 'index', 'login', 'add']);在 beforeFilter 中访问登录。 - 这是一个干净的 cakephp 3.8 安装,只有用于测试的数据库是相同的。 - 我只用蛋糕控制台添加了 Crud。

我想了解有关该 loginURL 的更多信息,我应该在 UsersController 中包含一些用途吗?导致此错误的原因是什么?

谢谢


错误消息目前有点误导,因为它没有向您显示可能的基本目录,这是您遇到的实际问题。我已经提议了解决这个问题,这可能会进入下一个版本。

当您的应用程序位于子目录中时,您需要确保您的登录 URL 配置考虑到这一点,即通过传递包含基本目录的 URL,您可以手动执行以下操作:

'loginUrl' => '/myapp/users/login'

或使用路由器:

'loginUrl' => \Cake\Routing\Router::url('/users/login')
'loginUrl' => \Cake\Routing\Router::url([
    'plugin' => null,
    'prefix' => null,
    'controller' => 'Users',
    'action' => 'login'
])

另一种选择是使用基于路由的 URL 检查器,它可以通过表单验证器进行配置urlChecker选项,那么你可以使用 URL 数组定义登录 URL,而无需使用路由器:

'urlChecker' => 'Authentication.CakeRouter',
'loginUrl' => [
    'plugin' => null,
    'prefix' => null,
    'controller' => 'Users',
    'action' => 'login'
]

也可以看看:

  • 身份验证手册 > 身份验证器 > 表单
  • 身份验证指南 > URL 检查器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cakephp 3 身份验证插件,登录 URL 不匹配 的相关文章

  • 锚标记内的 CakePHP Span 标记

    我试图让 CakePHP 输出一个如下所示的链接 a href foo bar class some other classes span class icon new span FooBar a 所以我在我看来使用以下代码
  • 在闪亮的应用程序和多个页面中进行身份验证

    在我正在开发的系统中 我有 3 个不同的参与者 用户 管理员 支持团队 使用 Shiny App 我想知道如何向这三个参与者进行身份验证 每个参与者只能访问他们的页面 我发现使用闪亮的服务器专业版可以实现这一点 但它不是免费的 有什么方法可
  • 在Web应用程序中调用phonegap插件功能

    我正在构建我的第一个phonegap应用程序 当我打开该应用程序时 我立即将用户重定向 window location 到托管我的网络应用程序的服务器 是否可以从那里加载phonegap 插件 因为 deviceready 事件没有触发 我
  • 基于资源的访问控制与基于角色的访问控制

    我正在学习 Apache Shiro 发现了这篇文章 新的 RBAC 基于资源的访问控制 http www stormpath com blog new rbac resource based access control 作者说 您可以将
  • 在 Java 服务器中验证 Windows 用户

    我正在开发一个用 Java 编写的服务器和一个在同一网络上的 Windows 计算机上运行的客户端 用 Net 编写的桌面应用程序 我希望进行一些基本身份验证 以便服务器可以确定运行客户端的用户的用户名 而不需要用户在客户端中重新输入其 W
  • 使用自己的 Web 应用程序 API - 使用 OAuth2 进行身份验证过程

    Overview 我目前正在为图像共享应用程序创建 API 该应用程序将在网络上运行 将来在移动设备上运行 我了解 API 构建的逻辑部分 但我仍然在努力满足我自己对身份验证部分的要求 因此 我的 API 必须可供全世界访问 具有访客访问权
  • 瓦廷 Windows 身份验证

    我正在尝试为使用集成身份验证的 Intranet 应用程序编写 Watin 测试 我尝试测试的网页打印 Page User Identity Name 这是我测试的一些代码 if Win32 LogonUser u UserName u D
  • 使用 Cypress 绕过 UI 登录

    我在绕过 UI 登录时遇到问题 我的 Web 应用程序不使用 API 来验证用户身份 没有像这样的端点 login index php只需打开登录页面并提交表单即可登录 应用程序通过以下方式对用户进行身份验证auth REQUEST use
  • DMARC/SPF/DKIM 未使用第三方邮件进行身份验证

    我们最近为我们的域实施了 DMARC 记录 v DMARC1 p 隔离 pct 100 rua mailto 电子邮件受保护 cdn cgi l email protection 隔离 100 未经身份验证的电子邮件并将汇总报告发送给 我
  • CSS 不适用于 CakePHP 应用程序

    我在使用 CakePHP 时遇到问题 找不到 CSS 当我在浏览器中查看源代码时 我可以在头部看到蛋糕通用 CSS 链接 但是当我点击它查看实际的源代码时 我收到了 404 未找到错误 Update 我已按照此处的说明进行操作 http b
  • 使用单个查询和每用户密码盐进行用户登录

    我决定使用存储在数据库中的每用户盐来实现用户登录 盐作为密码的前缀 该密码使用 SHA 进行哈希处理并存储在数据库中 过去 当我不使用盐时 我会使用典型的方法 使用用户输入的用户名和密码来计算查询返回的行数 然而 对于每个用户的盐 您需要先
  • CakePHP 3.X 中的自定义 404 页面

    我想为生产环境中出现的所有错误创建一个自定义 404 页面 例如 如果我收到缺少控制器或视图错误 那么它将重定向到http example com 404 html 另外在某些情况下我会故意重定向它http example com 404
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • 如何确定登录的Windows帐户是否已在域上进行身份验证[重复]

    这个问题在这里已经有答案了 可能的重复 在客户端 服务器应用程序中使用 Active Directory 对用户进行身份验证 https stackoverflow com questions 1337923 authenticating
  • 登录后如何在其他页面控制器中找到我当前的用户ID?

    我计划在我的事件索引页面上设置权限 该权限只允许某些用户查看我添加事件时设置的权限 用户点击进入我的事件后 事件控制器将首先检查用户 ID 并检查事件数据库 该数据库控制用户可以查看其日历中的哪个事件 当用户创建事件并分享给其他用户时添加权
  • CakePHP 3 API 的 POST 请求不起作用

    我正在使用 CakePHP 3 x 文档开发 API 为了开发这个 API 我使用了他们的官方文档 https book cakephp org 3 0 en development rest html https book cakephp
  • Apache 反向代理的基本身份验证问题

    我想为在 Ubuntu 服务器 12 04 1 上运行的 Apache 反向代理站点添加基本身份验证 网络应用程序是Jenkins http jenkins ci org运行在 Java EE 容器上 我在中添加了以下配置httpd con
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • AWS Amazon - 登录循环卡住

    我已经使用 AWS 亚马逊几年了 但是 突然当我登录时 我进入了此验证部分 他们将验证码发送到我的电子邮件 我收到了该代码 因此 我输入收到的代码 最终返回登录页面 所以我登录后 同样的事情一遍又一遍地发生 我无法进入我的仪表板 它只是不断
  • 游戏中心邀请处理程序,它属于哪里?

    我已经搜索了该网站并发现了这个 GameCenter 邀请处理程序 https stackoverflow com questions 4639284 gamecenter invitation handler He says 正如文档中所

随机推荐

  • Spring Batch JdbcPagingItemReader 似乎没有执行所有项目

    我正在开发一款应用程序 该应用程序从 Oracle 数据库中提取记录 然后将其导出为单个表格文件 但是 当我尝试使用 JdbcPagingItemReader 从数据库读取数据并写入文件时 我仅获得 pageSize 中指定的记录数 因此
  • R:根据条件的行值填充data.frame中的新列?

    我想根据行中的值在 data frame 中创建新列 如果 type 不等于 a 则我的 new area 列应包含来自 a 类型的 area 的数据 这是针对多个 距离 的 Example create data frame distan
  • Jruby:NameError:未初始化的常量 Neo4j

    我从 git 运行了这个例子 https github com andreasronge neo4j require rubygems require neo4j Neo4j Transaction run do node Neo4j No
  • useLocation 无法识别状态

    我开始使用react router 我发现我可以在 Link 组件中传递 props 以便某些值可以传递到另一个组件 我正在使用的按钮内发送一个名为 value 的组件 但是在接收该参数的组件中会显示一条错误消息 其中包含消息 对象可能为空
  • R - lubridate:将持续时间分割为“子持续时间”

    我有一个 R 整洁的数据集my durations其中数据框中的每个案例对应于在一段时间内采集的样本 如下所示 gt glimpse my durations Observations 300 Variables 5 sample id
  • 如何使用 Sys.Date() 获取上一年(2020 年)的摘录?

    Sys Date 给出今天的月 年和日期 2021 08 09 但是我该如何使用Sys Date 获取上一年 2020 的提取信息 谢谢你 Every Date or Datetime对象可以转换为POSIXlt其中 请参阅帮助 有许多子组
  • 从 Bash 中的行中删除中间的 n 个字符

    我正在尝试剪掉文件中每一行的中间部分 所有的行都是这样的 79 472850 97 SILENCE 我需要结束 79 472850 SILENCE 由于每行都有从字符 10 开始到字符 14 结束的不需要的部分 我试图以这种方式使用 sed
  • _IContactsAndGroupsCallback.OnLookUp

    我想按照以下指南为 Office 提供 IM 状态等http msdn microsoft com en US library office jj900715 aspx off15 IMIntegration ImplementRequir
  • Android 的 sqlite 加密

    我正在努力寻找在 Android 设备上加密我的 sqlite 数据库的可能性 但我无法找到令人满意的解决方案 我需要类似库之类的东西来引用 以便在使用正常的 sqlite 函数时对我的数据库进行 动态 加密 解密 我不想在存储之前加密数据
  • JTextArea不显示文本

    在我在文本区域中显示文本的函数中 我编写了以下代码行 但它没有显示任何文本 jTextArea1 setText Packet n jTextArea1 getText 我正在使用 swingworker 来执行后台任务 这是我的代码 pu
  • UIImage 将原始像素从白色更改为透明?

    我已经尝试了每个问题的一些代码 如何使 UIImage 上的一种颜色透明 如何遮盖 UIImage 以使白色在 iphone 上变得透明 但没有成功 不幸的是 使用核心图形和图像并不是我的强项 我将如何访问 UIImage 的原始数据并将白
  • android loadIcon 生成 outOfMemoryError

    我只有一点点ListView包含所有已安装的应用程序及其图标但如果安装了太多应用程序 我会遇到outOfMemoryErrors在做的时候 Drawable app icon applicationInfoList get i loadIc
  • 禁用 RichTextBox WF 上的删除按钮

    我试图禁止人们删除 Richtextbox 中的文本框 该项目使用windows窗体 这是我的代码 private void Form1 Load object sender EventArgs e richTextBox1 KeyPres
  • 如何在 Android 中运行媒体扫描仪

    我想在捕获图像时运行媒体扫描仪 捕获后 图像会在网格视图中更新 为此 我需要运行媒体扫描仪 我找到了两个解决方案来运行媒体扫描仪一个是播送事件 另一个是运行媒体扫描仪类 我认为在 Ice Cream Sandwich 4 0 中引入了媒体扫
  • Mac 上的 TensorFlow 安装错误

    我想在我的 Mac 上通过 PyCharm 使用 TensorFlow 但是当我使用时 pip install https storage googleapis com tensorflow mac tensorflow 0 5 0 py2
  • 如何在Python中设置线程特定的环境变量?

    我想创建两个 或更多 线程 并在每个线程中执行不同的外部程序 比方说aaa and bbb 这些外部程序需要位于不同目录中的库 比方说 aaalib and bbblib 所以我必须设置环境变量LD LIBRARY PATH在执行它们之前
  • rand() 为什么以及如何同时存在于 cstdlib 的全局和 std 命名空间中?

    我明白那个rand 作为示例函数
  • 编译一个简单的 Qt“Hello World!” Visual Studio 2010 Express 中的应用程序?

    我正在尝试构建一个基本的 Qt Hello world Visual Studio 中的应用程序 我拿到moc步骤工作 我认为 但现在我不知道如何修复这个链接器错误 1 gt moc mainwindow obj error LNK2001
  • css渐变不透明度幻灯片图像从左到右颜色白色

    I want to use css to fill a certain color on my image it will have a blur reduction 我尝试了很多方法 但无法在图像上插入颜色 请告诉我参数 以便我可以调整宽
  • Cakephp 3 身份验证插件,登录 URL 不匹配

    我想使用 CakePHP 3 8 的身份验证插件 但我遇到了文档中没有的问题 之后按照入门 https book cakephp org authentication 1 en index html 我有一个问题 最初指定 fields 来