powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security как обрабатывать AccessDeniedException
17 сообщений из 17, страница 1 из 1
Spring Security как обрабатывать AccessDeniedException
    #38272106
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял используя подход основанный на аннотациях(например @PreAuthorize("hasRole('ROLE_ROLE123')") ), исключения будет всегда одно и тоже AccessDeniedException. Но хочется, чтобы сообщения пользователю были различными, в зависимости от метода где произошло исключение. Как это правильно делается? Т.е. хотел бы механизм, который используюся в Hibernate Validator, где в аннотации можно указать параметр message="". Сейчас я оборачиваю вызов метода, который помечен аннотацией @PreAuthorize, в блок try catch

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
try {
            service.change(...);

        } catch (AccessDeniedException ex) {
            
            return error("ошибка 123");
            
        }


//..... Service


@PreAuthorize("hasRole('ROLE_ROLE123')")
    public void change(...) {}
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272139
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А покажи stacktrace. Надо найти тот класс, который выкидывает исключение и переопределить его на что-то что умеет добавлять message либо врапить исключение дополнительной инфой.
Можно свою прокси изобрести поверх спринговой, которая будет ловить AccessDeniedException и по какой-то своей аннотации или другому признаку вычислять новый message.
Честно говоря не очень понятно какой полезный текст туда можно дописать...
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272154
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА покажи stacktrace. Надо найти тот класс, который выкидывает исключение и переопределить его на что-то что умеет добавлять message либо врапить исключение дополнительной инфой.
Можно свою прокси изобрести поверх спринговой, которая будет ловить AccessDeniedException и по какой-то своей аннотации или другому признаку вычислять новый message.
Честно говоря не очень понятно какой полезный текст туда можно дописать...
Ну к примеру, есть методы на уровне сервиса

addImage()
addText()
addVideo()

Было бы удобно если бы в аннотацию @PreAuthorize("hasRole('ROLE_ADDIMAGE')") можно было добавить параметр message="Вам нельзя добавлять картинку", который был бы доступен в исключении при его возникновении. Нет?
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272156
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так, во всех трех методах идентичные исключения, и везде одно сообщение писать("Отказано в доступе") как то не очень.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272162
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,

Ну, тогда проще всего свой какой-то враппер написать. Или через AOP навесить глобальный интерцептор. Которы будет ловить именно это исключение. Анализировать stacktrace на предмет проблемного метода. И уже либо через рефлексию, либо по имени метода менять\добавлять текст ошибки.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272172
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczrdm,

Ну, тогда проще всего свой какой-то враппер написать. Или через AOP навесить глобальный интерцептор. Которы будет ловить именно это исключение. Анализировать stacktrace на предмет проблемного метода. И уже либо через рефлексию, либо по имени метода менять\добавлять текст ошибки.
Т.е. как я сейчас делаю, просто вызывая такие методы в блоке try catch это плохо?
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272184
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmТ.е. как я сейчас делаю, просто вызывая такие методы в блоке try catch это плохо?
На 100 service методов у вас будет 100 try catch только для того чтобы добавить текст? А как же DRY?
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272192
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczrdmТ.е. как я сейчас делаю, просто вызывая такие методы в блоке try catch это плохо?
На 100 service методов у вас будет 100 try catch только для того чтобы добавить текст? А как же DRY?
Я надеялся, что есть классическое решение этого вопроса)
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272196
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmЯ надеялся, что есть классическое решение этого вопроса)
Не знаю на счет классического. Посмотрел исходники Spring. Для PreAuthorize не нашел.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272205
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть AccessDeniedHandler для SpringMVC
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272214
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272217
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczrdmЯ надеялся, что есть классическое решение этого вопроса)
Не знаю на счет классического. Посмотрел исходники Spring. Для PreAuthorize не нашел.
Может я что-то глобально не понимаю? Методы же явно могут ограничивать совершено разные функции.
Соответственно и реакция(в простейшем случае сообщение) должны быть разными на одно и тоже исключение.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272221
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmМетоды же явно могут ограничивать совершено разные функции.
5 раз прочитал, так и не понял что это значит.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272222
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmСоответственно и реакция(в простейшем случае сообщение) должны быть разными на одно и тоже исключение.
Так не бывает. Есть несколько конкретных случаев, когда отдельное исключение можно как-то обработать.
В подавляющем большинстве случаев все исключение приводят к одному и тому же: откатили транзакцию, записали в лог, показали юзеру.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272237
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczrdmМетоды же явно могут ограничивать совершено разные функции.
5 раз прочитал, так и не понял что это значит.
Не суть важно)
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272240
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczrdmСоответственно и реакция(в простейшем случае сообщение) должны быть разными на одно и тоже исключение.
Так не бывает. Есть несколько конкретных случаев, когда отдельное исключение можно как-то обработать.
В подавляющем большинстве случаев все исключение приводят к одному и тому же: откатили транзакцию, записали в лог, показали юзеру. Вот последний пункт "показали юзеру". Можно написать "Отказано", а можно разные сообщения, в зависимости от того, что пользователь хотел сделать.
...
Рейтинг: 0 / 0
Spring Security как обрабатывать AccessDeniedException
    #38272267
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmв зависимости от того, что пользователь хотел сделать.
В большинстве случаев пользователь знает что он только что хотел сделать.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security как обрабатывать AccessDeniedException
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]