Caching 安全域的Wildfly刷新缓存

Caching 安全域的Wildfly刷新缓存,caching,jboss,wildfly,flush,securitydomain,Caching,Jboss,Wildfly,Flush,Securitydomain,Im在wildfly上部署了一个带有JAX-RS接口的war项目,并且配置了一个安全域,从db加载用户密码和角色。安全域使用缓存类型=默认值。安全域无法识别已验证用户的更新,因为旧数据被缓存。我用jboss-cli.sh验证了这一点。那么,如何从缓存中删除特定用户呢?我希望在已部署的应用程序中执行此操作,而不是通过jboss cli.sh执行此操作。您的问题可能与WildFly中的错误有关: 有一种解决方法可以显式刷新身份验证缓存: @WebListener public class Sessi

Im在wildfly上部署了一个带有JAX-RS接口的war项目,并且配置了一个安全域,从db加载用户密码和角色。安全域使用缓存类型=默认值。安全域无法识别已验证用户的更新,因为旧数据被缓存。我用jboss-cli.sh验证了这一点。那么,如何从缓存中删除特定用户呢?我希望在已部署的应用程序中执行此操作,而不是通过jboss cli.sh执行此操作。

您的问题可能与WildFly中的错误有关:

有一种解决方法可以显式刷新身份验证缓存:

@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);
    }
}
@WebListener
公共类SessionInvalidationListener实现HttpSessionListener{
@注入
私人校长;
@资源(name=“java:jboss/jaas/mydomain/authenticationMgr”)

private CacheableManager在使用域模式的Wildfly 10中,您可以通过以下方式使用jboss cli非常轻松地清除安全域的缓存:

首先使用连接到域控制器

./jboss-cli.sh --connect controller={domainhost}:9990 --user={username} --password={password}
然后执行命令

/host={hostname}/server={instancename}/subsystem=security/security-domain={securityname}:flush-cache
如果安全域的定义如下:

<security-domain name="ldap-test" cache-type="default">
/host=wf-server-1/server=instance-1/subsystem=security/security-domain=ldap-test:flush-cache

类似的解决方案应适用于独立模式。

如果从安全域中删除属性“cache type=default”,则不会使用缓存。
另请参见此处:

您使用的是哪个版本的WildFly?它是WildFly 8.2.0。最终不使用会话,因此此错误不会影响我的问题。我只想刷新安全域的缓存,这完全是您的解决方案所做的:)Tanks!我遇到了一个新问题,因此打开了一个新线程。您知道如何跨多个线程刷新缓存吗e Wildfly实例?在独立模式或域模式下运行?这是我在Wildfly 11中遇到的缓存问题的最准确答案。在独立模式下,命令看起来像这样
jboss-cli.sh-c--controller=127.0.0.1:9990--user={username}--password={password}--command=“/subsystem=security/security domain=ldap测试:刷新缓存”