
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.05.2013, 14:06:42
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
Как я понял используя подход основанный на аннотациях(например @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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:13:30
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
А покажи stacktrace. Надо найти тот класс, который выкидывает исключение и переопределить его на что-то что умеет добавлять message либо врапить исключение дополнительной инфой. Можно свою прокси изобрести поверх спринговой, которая будет ловить AccessDeniedException и по какой-то своей аннотации или другому признаку вычислять новый message. Честно говоря не очень понятно какой полезный текст туда можно дописать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:17:42
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
BlazkowiczА покажи stacktrace. Надо найти тот класс, который выкидывает исключение и переопределить его на что-то что умеет добавлять message либо врапить исключение дополнительной инфой. Можно свою прокси изобрести поверх спринговой, которая будет ловить AccessDeniedException и по какой-то своей аннотации или другому признаку вычислять новый message. Честно говоря не очень понятно какой полезный текст туда можно дописать... Ну к примеру, есть методы на уровне сервиса addImage() addText() addVideo() Было бы удобно если бы в аннотацию @PreAuthorize("hasRole('ROLE_ADDIMAGE')") можно было добавить параметр message="Вам нельзя добавлять картинку", который был бы доступен в исключении при его возникновении. Нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:18:44
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
а так, во всех трех методах идентичные исключения, и везде одно сообщение писать("Отказано в доступе") как то не очень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:20:25
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
rdm, Ну, тогда проще всего свой какой-то враппер написать. Или через AOP навесить глобальный интерцептор. Которы будет ловить именно это исключение. Анализировать stacktrace на предмет проблемного метода. И уже либо через рефлексию, либо по имени метода менять\добавлять текст ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:23:27
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
Blazkowiczrdm, Ну, тогда проще всего свой какой-то враппер написать. Или через AOP навесить глобальный интерцептор. Которы будет ловить именно это исключение. Анализировать stacktrace на предмет проблемного метода. И уже либо через рефлексию, либо по имени метода менять\добавлять текст ошибки. Т.е. как я сейчас делаю, просто вызывая такие методы в блоке try catch это плохо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:26:33
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
rdmТ.е. как я сейчас делаю, просто вызывая такие методы в блоке try catch это плохо? На 100 service методов у вас будет 100 try catch только для того чтобы добавить текст? А как же DRY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:28:12
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
BlazkowiczrdmТ.е. как я сейчас делаю, просто вызывая такие методы в блоке try catch это плохо? На 100 service методов у вас будет 100 try catch только для того чтобы добавить текст? А как же DRY? Я надеялся, что есть классическое решение этого вопроса) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:29:43
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
rdmЯ надеялся, что есть классическое решение этого вопроса) Не знаю на счет классического. Посмотрел исходники Spring. Для PreAuthorize не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:32:12
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
Есть AccessDeniedHandler для SpringMVC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:33:09
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:33:27
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
BlazkowiczrdmЯ надеялся, что есть классическое решение этого вопроса) Не знаю на счет классического. Посмотрел исходники Spring. Для PreAuthorize не нашел. Может я что-то глобально не понимаю? Методы же явно могут ограничивать совершено разные функции. Соответственно и реакция(в простейшем случае сообщение) должны быть разными на одно и тоже исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:35:27
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
rdmМетоды же явно могут ограничивать совершено разные функции. 5 раз прочитал, так и не понял что это значит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:37:01
|
|||
|---|---|---|---|
|
|||
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
rdmСоответственно и реакция(в простейшем случае сообщение) должны быть разными на одно и тоже исключение. Так не бывает. Есть несколько конкретных случаев, когда отдельное исключение можно как-то обработать. В подавляющем большинстве случаев все исключение приводят к одному и тому же: откатили транзакцию, записали в лог, показали юзеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:41:40
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
BlazkowiczrdmМетоды же явно могут ограничивать совершено разные функции. 5 раз прочитал, так и не понял что это значит. Не суть важно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.05.2013, 14:43:12
|
|||
|---|---|---|---|
Spring Security как обрабатывать AccessDeniedException |
|||
|
#18+
BlazkowiczrdmСоответственно и реакция(в простейшем случае сообщение) должны быть разными на одно и тоже исключение. Так не бывает. Есть несколько конкретных случаев, когда отдельное исключение можно как-то обработать. В подавляющем большинстве случаев все исключение приводят к одному и тому же: откатили транзакцию, записали в лог, показали юзеру. Вот последний пункт "показали юзеру". Можно написать "Отказано", а можно разные сообщения, в зависимости от того, что пользователь хотел сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2129296]: |
0ms |
get settings: |
14ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
44ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 307ms |
| total: | 495ms |

| 0 / 0 |
