具有错误凭据的 API 重定向到 html 登录表单
Posted
技术标签:
【中文标题】具有错误凭据的 API 重定向到 html 登录表单【英文标题】:API with wrong credentials redirects to html login form 【发布时间】:2022-01-01 18:40:42 【问题描述】:我使用 Cakephp 4 创建了一个新应用程序。我使用 CakeDC/users 插件进行身份验证。它工作正常。我可以登录应用程序。
我还按照以下说明添加了 REST API:REST - 4.x
对于 API 的身份验证,我使用基于 Token 的方法,它工作正常。对于 API,我创建了一个新前缀:
$routes->prefix('Api', function (RouteBuilder $routes)
$routes->setExtensions(['json']);
$routes->fallbacks(DashedRoute::class);
);
这是 users.php 中的配置:
'Auth.Authenticators.Token' => [
'className' => 'Authentication.Token',
'skipTwoFactorVerify' => true,
'header' => 'authorization',
'queryParam' => 'api_token',
'tokenPrefix' => 'Token',
'unauthenticatedRedirect' => null
],
当我输入错误的令牌时会发生问题。 API 返回 html 登录表单。我希望返回 401。
有什么好的教程或提示,如何解决这个问题?
Tnx
【问题讨论】:
【参考方案1】:我创建了自定义的未授权处理程序类,它工作正常。
在 config/users.php 我添加了这一行:
'Auth.AuthorizationMiddleware.unauthorizedHandler.className' => 'CustomRedirect',
并在 src/Middleware/UnauthorizedHandler 目录下新建了一个文件 CustomRedirectHandler.php。
我也错过了 accept: application/json 标头。
【讨论】:
以上是关于具有错误凭据的 API 重定向到 html 登录表单的主要内容,如果未能解决你的问题,请参考以下文章