Понятия не имею, поддерживает ли это подключаемый модуль Shiro, но подключаемый модуль Acegi < / a> работает, хотя и «экспериментальным» способом (что бы это ни значило).
Обновить
Внимательно прочитав вопрос, кажется, вы спрашиваете, можете ли вы использовать фильтры для защиты служб. Если это так, то Широ не имеет значения, потому что авторизацию выполняют фильтры, а не Широ.
Итак, чтобы ответить на ваш вопрос о том, можете ли вы использовать фильтры для защиты служб, ответ будет отрицательным, потому что у вас есть доступ к контроллеру только из фильтра. Однако вы можете использовать метапрограммирование Groovy для перехвата методов в стиле АОП на сервисах.
Базовый подход:
- Для каждой службы добавьте свойство
invokeMethod
в MetaClass
- Значением этого свойства должно быть Closure. Это закрытие будет перехватывать (т.е. вызываться вместо) каждый метод, вызываемый в службе.
- This closure should
- Perform the security checks
- Вызвать исходный метод, если авторизация прошла успешно, и выбросить исключение (или показать ошибку), если авторизация не удалась.
В сторону
Если это вообще возможно, я настоятельно рекомендую использовать проверенный плагин безопасности (например, Shiro, Acegi) для выполнения проверок авторизации, а не накатывать свой собственный, как описано выше.
person
Dónal
schedule
03.02.2010