Как создать специальное исключение AccessDeniedException в Spring Security? - PullRequest
0 голосов
/ 25 сентября 2018

Я новичок в Spring Security.Когда происходит AccessDeniedException, я хотел бы показать причину, по которой доступ был отклонен в ответе.

Например, я хотел бы показать что-то вроде «вы не можете удалить объект, потому что вы невладелец "или" вы не можете создавать новые объекты, потому что ваша учетная запись была приостановлена ​​".Я ожидаю, что такие сообщения распространяются с пользовательским AccessDeniedException, например NotOwnerException или AccountSuspendedException.

Я пытаюсь @PreAuthorize аннотации с пользовательским PermissionEvaluator, но кажется, что нетспособ распространения таких причин из моего PermissionEvaluator в ответ.

Есть ли способ добиться этого в Spring Security?Спасибо!

1 Ответ

0 голосов
/ 23 октября 2018

Я думаю, что Spring Security не предлагает или даже не позволяет нам создавать пользовательские AccessDeniedException.

Согласно обсуждению в этом выпуске GitHub , Люк Тейлор (сопровождающийSpring Security) сказал:

AccessDeniedHandler обычно вызывается только тогда, когда аутентифицированный пользователь пытается получить доступ к тому, что он не должен.Обычный поток приложения должен мешать им делать это, поэтому это должно происходить только в том случае, если они намеренно манипулируют URL-адресами (или чем-то еще), чтобы попытаться обойти их нормальные границы, или если в приложении есть ошибка.

Поскольку «доступ запрещен» не должен происходить в обычном потоке, исключение не должно быть настраиваемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...