Как использовать разрешения кеша в grails shiro

Каждый раз, когда я вызываю subject.isPermitted(), он отправляет sql в базу данных.
Как мне его кэшировать? Любой пример? Спасибо.


Я прочитал документ плагина shiro grails, но не могу его решить.

Источник данных:

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = true
    cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}

Как настроить cachemanager на широ? Пробую spring.resource, выдает ошибку.

Какое имя экземпляра bean-компонента cachemanager? Нужно ли мне настраивать что-то еще?


person atian25    schedule 13.12.2010    source источник


Ответы (1)


Вам потребуется настроить экземпляр org.apache.shiro.cache.CacheManager в SecurityManager Широ. Большинство готовых реализаций Realm от Shiro знают, как работать с настроенным CacheManager, и автоматически кэшируют AuthorizationInfo, возвращаемую из поиска разрешений Realm.

Я не знаю, как это сделать с помощью подключаемого модуля Grails Shiro, но в INI Широ это можно сделать следующим образом:

[main]
...
cacheManager = com.my.implementation.of.CacheManager
securityManager.cacheManager = $cacheManager
...

Я бы порекомендовал обратиться к списку рассылки пользователей Grails, чтобы узнать, есть ли более «грайльский» способ настроить это для подключаемого модуля Grails Shiro.

ХТХ,

Лес

person Les Hazlewood    schedule 13.12.2010
comment
@Les - мне нужно сделать то же самое, я хочу использовать встроенную поддержку кэширования, которая поставляется с grails, но я думаю, что это невозможно с учетом того, как реализован плагин grails-shriro. Плагин Grails shiro не расширяет ни одну из встроенных областей (например, AuthorizingRealm), а реализует сам интерфейс Realm. Таким образом, чтобы выполнить кеширование, мы должны сделать это вручную в самой области и не можем зависеть от Широ, чтобы кэшировать информацию аутентификации для нас. - person Sudhir N; 07.09.2012