Понятия не имею, поддерживает ли плагин Shiro это, но плагин Acegi поддерживает, хотя и "экспериментально" (что бы это ни значило).
Обновление
Правильно прочитав вопрос, кажется, вы спрашиваете, можете ли вы использовать фильтры для защиты сервисов. Если это так, то Широ в некоторой степени не имеет значения, потому что авторизацию выполняют фильтры, а не Широ.
Итак, чтобы ответить на ваш вопрос о том, можете ли вы использовать фильтры для защиты сервисов, ответьте «нет», потому что у вас есть доступ к контроллеру только из фильтра. Однако вы можете использовать метапрограммирование Groovy для перехвата методов в стиле AOP на сервисах.
Основной подход:
- Для каждой службы добавьте свойство
invokeMethod
в MetaClass
- Значение этого свойства должно быть Закрытием. Это закрытие будет перехватывать (т.е. вызываться вместо) каждый метод, вызываемый в службе.
- Это закрытие должно
- Выполнить проверки безопасности
- Вызовите оригинальный метод, если авторизация прошла успешно, и сгенерируйте исключение (или покажите ошибку), если авторизация не удалась
Помимо
Если это вообще возможно, я бы настоятельно рекомендовал использовать проверенный плагин безопасности (например, Shiro, Acegi) для выполнения проверок авторизации, а не развертывать свои собственные, как описано выше.