私はwildflyにデプロイされたJAX-RSインターフェースを備えた戦争プロジェクトを持っており、データベースからユーザーパスワードとロールをロードするセキュリティドメインが構成されています。security-domain は cache-type=default を使用します。古いデータがキャッシュされるため、認証されたユーザーの更新は security-domain によって認識されません。jboss-cli.sh でこれを確認しました。では、特定のユーザーをキャッシュから削除するにはどうすればよいでしょうか? jboss-cli.sh 経由ではなく、デプロイされたアプリケーション内でこれを実行したいと考えています。
7269 次
3 に答える
7
問題は WildFly のバグに関連している可能性があります: https://issues.jboss.org/browse/WFLY-3221。
認証キャッシュを明示的にフラッシュする回避策があります。
@WebListener
public class SessionInvalidationListener implements HttpSessionListener {
@Inject
private Principal principal;
@Resource(name = "java:jboss/jaas/mydomain/authenticationMgr")
private CacheableManager<?, Principal> authenticationManager;
@Override
public void sessionCreated(HttpSessionEvent se) {
// not used
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
authenticationManager.flushCache(principal);
}
}
このアプローチを少し異なるユースケースでテストしました。興味深いのは、にアクセスするauthenticationManager
ことです。状況に合わせて簡単に変更できるはずです。
このバグは、WildFly 9.x で修正されるはずです (確認していません)。
于 2015-09-05T16:17:39.470 に答える