| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Доп. проверка юзера в acegi |
| Автор: VictorCV 2.4.2009, 17:21 |
| Короче, ситуация такая - после того, как acegi аутенцифицирует пользователя, необходимо выполнить ещё дополнительную проверку на авторизацию. Эта проверка заключается в том, что мы посылаем запрос на веб-сервис и , в зависимости от ответа, допускаем его к ресурсу ил выбрасываем обратно на логин с соответствующей ошибкой. Как такое сотворить? с acegi раньше не связывался, пол дня сижу мозг ломаю =( |
| Автор: _sten_ 2.4.2009, 21:35 | ||||
Попробуй в AccessDecisionManager добавить свой вотер который и будет делать нужную проверку:
в вотере нужно просто реализовать интерфейс AccessDecisionVoter:
|
| Автор: VictorCV 3.4.2009, 09:26 |
| ок, спасибо, так можно сделать, но вотер не решает ещё двух проблем - 1 - проверка должна осуществляться только 1 раз сразу после логина пользователя, 2 - в случае отказа мы должны выдать пользователю сообщение об ошибке работы с сервисом, вотер же просто голосует да/нет В обоих случаях помогла бы просто передача параметров с страницы логина в вотер и обратно - это можно реализовать? |
| Автор: MisterCleric 3.4.2009, 10:25 | ||||
| Здравствуйте. Позвольте я тоже поучаствую. Я, конечно, с acegi не работал, но последний проект сделал на http://static.springsource.org/spring-security/site/index.html Так вот у меня тоже была подобная задача: после аутентификации пользователя еще проверить есть ли у него право входа. Типа юзер-то активен, но у него отняли право входа. Еще такая ситуация, что аутентификация проходит через LDAP, а права хранятся у меня в базе. Я решил проблему кастомизацией AuthenticationProvider и того у меня вышло такое:
И того BasicProcessingFilter вызывает AuthenticationManager, который содержит мой AuthenticationProvider правда я задал мой кастомный и LDAP провайдер именно в такой последовательности, что мой вызывался первей. Ну такие вот неудобства |