首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安全域的野生苍蝇刷新缓存

安全域的野生苍蝇刷新缓存
EN

Stack Overflow用户
提问于 2015-09-03 21:36:17
回答 3查看 7.9K关注 0票数 5

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-05 16:17:39

您的问题可能与WildFly:https://issues.jboss.org/browse/WFLY-3221中的一个bug有关。

有一个方法可以显式地刷新身份验证缓存:

代码语言:javascript
运行
复制
@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中修复(我没有检查)。

票数 6
EN

Stack Overflow用户

发布于 2017-07-01 18:54:06

在使用域模式的Wildfly 10中,您可以很容易地通过以下方式使用jboss清除安全域的缓存:

首先连接到域控制器

代码语言:javascript
运行
复制
./jboss-cli.sh --connect controller={domainhost}:9990 --user={username} --password={password}

然后执行命令

代码语言:javascript
运行
复制
/host={hostname}/server={instancename}/subsystem=security/security-domain={securityname}:flush-cache

如果安全域定义如下:

代码语言:javascript
运行
复制
<security-domain name="ldap-test" cache-type="default">

命令将如下所示:

代码语言:javascript
运行
复制
/host=wf-server-1/server=instance-1/subsystem=security/security-domain=ldap-test:flush-cache

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

票数 1
EN

Stack Overflow用户

发布于 2017-09-11 13:43:49

如果从安全域删除属性' cache -type=default‘,则不会使用缓存。另见此处:https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32385823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档