私は休止状態ではありませんが、この質問にはまだ回答がないため、いくつかの理由で標準のIdentityクラスのseamを拡張しました。結果をキャッシュするのに役立つように、これも拡張することをお勧めします。
このキャッシュはセッションスコープであるため、ユーザーが再度ログオン/ログオフしたときにリロードされるという利点がありますが、これは要件によって異なります。
よろしく、アレクサンダー。
/**
* Extended Identity to implement i.e. caching
*/
@Name("org.jboss.seam.security.identity")
@Scope(SESSION)
@Install(precedence = Install.APPLICATION)
@BypassInterceptors
@Startup
public class MyIdentity extends Identity {
// place a concurrent hash map here
@Override
public boolean hasPermission(Object name, String action) {
// either use the use the cached result in the hash map ...
// ... or call super.hasPermission() and cache the result
}
}