Cake PHP 4 Запрос плагина аутентификацииAuthorizationMiddleware URL-адрес перенаправления отсутствует - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь использовать, чтобы добавить RequestAuthorizationMiddleware для некоторого контроллера в моем приложении в торт 4. В Middleware Authorization Middleware я вижу блок кода, подобный этому:

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

Я могу добавить URL перенаправления, если авторизация не удалась. Это прекрасно работает, но как я могу добавить URL перенаправления для Middleware авторизации запроса ?

1 Ответ

0 голосов
/ 30 января 2020

Вы действительно не получаете перенаправление с этим, когда авторизация не проходит, но когда авторизация не может быть выполнена с самого начала, то есть, когда нет аутентифицированного идентификатора, который можно было бы использовать для авторизации, это вызовет следующее исключение:

\Authorization\Exception\MissingIdentityException

Если вы хотите отловить неудачную авторизацию, ie, когда пользователю / удостоверению не разрешен доступ к любому ресурсу, который вы защищаете, тогда вам нужно обработать также следующее исключение:

\Authorization\Exception\ForbiddenException

Это исключение выдается промежуточным программным обеспечением авторизации запроса, а также компонентом авторизации .

Просто добавьте его в exceptions config, и вы должны быть хороши в go (то есть если вы все в порядке с перенаправлениями, происходящими для всех неудачных попыток авторизации):

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

Обратите внимание, что для того, чтобы все это работало правильно, вы должны добавьте промежуточное ПО авторизации запроса после промежуточного ПО авторизации по умолчанию!

...