CakePHP 4身份验证插件RequestAuthorizationMiddleware重定向URL丢失

时间:2020-01-29 22:59:52

标签: redirect cakephp authorization cakephp-4.x

我尝试在蛋糕4的应用程序中为某些控制器添加RequestAuthorizationMiddleware。 在Authorization Middleware中,我看到了这样的代码块:

$middlewareQueue->add(new AuthorizationMiddleware($this, [
    'unauthorizedHandler' => [
        'className' => 'Authorization.Redirect',
        'url' => '/users/login',
        'queryParam' => 'redirectUrl',
        'exceptions' => [
            MissingIdentityException::class,
            OtherException::class,
        ],
    ],
]));

如果授权失败,我可以添加重定向URL。 这项工作正常,但是我如何为Request Authorization Middleware添加重定向网址?

1 个答案:

答案 0 :(得分:2)

当授权失败时,您并不会真正获得重定向,但是当授权不能从头开始执行时,即当不存在可用于授权的身份验证身份时,将引发以下异常: / p>

\Authorization\Exception\MissingIdentityException

如果您想获得不成功的授权,即当不允许用户/身份访问您要保护的任何资源时,那么您也需要处理以下异常:

\Authorization\Exception\ForbiddenException

请求授权中间件和by the authorization component(除非您要进行手动can*检查)都会引发该异常。

只需将其添加到exceptions配置中就可以了(假设您可以接受手动can*手动检查未处理的所有失败授权尝试的重定向) :

'exceptions' => [
    \Authorization\Exception\MissingIdentityException::class,
    \Authorization\Exception\ForbiddenException::class,
    // ...
],

请注意,为了使所有这些正常工作,您必须在默认授权中间件之后之后添加请求授权中间件!