我尝试在蛋糕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添加重定向网址?
答案 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,
// ...
],
请注意,为了使所有这些正常工作,您必须在默认授权中间件之后之后添加请求授权中间件!