2010-12-13 8 views
3

私はsubject.isPermitted()を呼び出すたびにsqlをdbに送ります。 どうすればキャッシュできますか?grails shiroでキャッシュのパーミッションを使用する方法

どのような例ですか?ありがとう


私はshiro grailsプラグインのドキュメントを読んでいました。しかし、それを解くことはできません。

データソース:SHIROしてCacheManagerを設定するには、どのようにして

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

?私はspring.resourceを試してエラーを投げます。

とcachemanagerのインスタンスBeanの名前は何ですか?私は他のsthを設定する必要がありますか?

答えて

1

ShiroのSecurityManagerでorg.apache.shiro.cache.CacheManagerインスタンスを設定する必要があります。 ShiroのすぐれたRealm実装の大半は、設定されたCacheManagerを使用する方法を認識しており、Realm権限検索から返されたAuthorizationInfoを自動的にキャッシュします。

私はGrailsの史郎プラグインを使用してこれを実行するかどうかはわかりませんが、史郎のINIで、あなたはこのようことを行うだろう:

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

は私がGrailsの-userメーリングリストを求めてお勧めしますGrails Shiroプラグインのためにこれを設定するためにもっと "grailsy"な方法があるかどうかを見てください。返信用

HTH、

+0

感謝。 – atian25

+0

@Les - 私は同じことをする必要があります。私はgrailsに付属している組み込みキャッシュサポートを使いたいですが、grails-shriroプラグインの実装方法では不可能だと思います。 Grails shiro pluginは、組み込み領域(例えばAuthorizingRealm)を拡張せず、むしろRealmインタフェースを実装します。したがって、キャッシュを行うためには、レルム自体で手動で行う必要があり、私たちの認証情報をキャッシュするためにshiroに依存することはできません –

関連する問題