5

私はwildflyにデプロイされたJAX-RSインターフェースを備えた戦争プロジェクトを持っており、データベースからユーザーパスワードとロールをロードするセキュリティドメインが構成されています。security-domain は cache-type=default を使用します。古いデータがキャッシュされるため、認証されたユーザーの更新は security-domain によって認識されません。jboss-cli.sh でこれを確認しました。では、特定のユーザーをキャッシュから削除するにはどうすればよいでしょうか? jboss-cli.sh 経由ではなく、デプロイされたアプリケーション内でこれを実行したいと考えています。

4

3 に答える 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 に答える