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

start [/forum/topic.php?fid=59&fpage=227&tid=2129296]: |
0ms |
get settings: |
9ms |
get forum list: |
28ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
62ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 294ms |
| total: | 498ms |

| 0 / 0 |
