具有错误凭据的 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 登录表单的主要内容,如果未能解决你的问题,请参考以下文章

Django管理员登录页面在正确的登录凭据上重定向到同一页面

Twitter API登录无法无缝重定向已批准的用户

单击登录后如何重定向到下一页并检查用户凭据是不是正确

身份验证重定向失败

登录后无法重定向

为啥登录后phpmyadmin会重定向到登录页面?