【问题标题】:Is it possible to remove role or flush cache in jboss at runtime?是否可以在运行时删除 jboss 中的角色或刷新缓存?
【发布时间】:2015-12-16 20:35:56
【问题描述】:

在 Wildfly 中运行的我的 web 应用程序中,定义了多个角色。用户为他拥有的每个角色(例如管理员、支持等)提供了几个选项卡。用户/管理员还可以在浏览器中为自己或其他用户启用/禁用角色。但是当角色被添加/删除时,标签也应该被添加/删除。只有从 cli 手动刷新 jboss 缓存或更糟糕的是 - 重新启动时,才会发生这种情况。是否可以在运行时删除角色或刷新服务器缓存(当用户单击按钮时)?角色身份验证是通过“request.isUserInRole()”完成的,但我需要的是 setUserInRole("admin")=false 之类的东西。

【问题讨论】:

  • 我想刷新缓存和从 jboss 服务器中删除用户角色是两个不同的事情,可能是两个不同的问题,但是由于这两种解决方案都可以工作,所以请耐心等待。

标签: java jboss wildfly wildfly-8 user-roles


【解决方案1】:

我就是这样解决的。

public void flushAuthenticationCache(String userid) {

    final String domain = "mydomain";
    try {
        ObjectName jaasMgr = new ObjectName("jboss.as:subsystem=security,security-domain=" + domain);
        Object[] params = {userid};
        String[] signature = {"java.lang.String"};
        MBeanServer server = (MBeanServer) MBeanServerFactory.findMBeanServer(null).get(0);
        server.invoke(jaasMgr, "flushCache", params, signature);

        } catch (Throwable e) {
        e.printStackTrace();
      }
}

请注意,上述方法仅为特定用户刷新缓存。 下面的方法为所有用户刷新缓存:

public static final void flushJaasCache(String securityDomain){  
      try {  
           javax.management.MBeanServerConnection mbeanServerConnection = java.lang.management.ManagementFactory  
                     .getPlatformMBeanServer();  
           javax.management.ObjectName mbeanName = new javax.management.ObjectName("jboss.as:subsystem=security,security-domain="+securityDomain);  
           mbeanServerConnection.invoke(mbeanName, "flushCache", null, null);  
      } catch (Exception e) {  
           throw new SecurityException(e);  
      }  
}

【讨论】:

  • 您的服务器是在独立模式还是域模式下运行?因为我在域模式下收到以下错误:2017-07-03 15:14:39,397 错误 [ch.bls.lopas.server.resource.ConnectionTestResource](默认任务 8)刷新缓存时出错:WFLYJMX0019:没有命名操作'刷新缓存'
【解决方案2】:

对于那些使用 JBoss CLI 的人,我想出这个命令来做上面的等价物。在下面的命令中,我使用的是域配置,但类似的应该适用于单个服务器。

/host=MyHost/server=MyServer/subsystem=security/security-domain=other:flush-cache(principal=UserToFlush)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多