在我的webapp中,運行在Wildfly中,定義了幾個角色。用戶每個角色都有多個選項卡(例如管理員,支持等)。用戶/管理員還可以爲他自己或瀏覽器中的其他用戶啓用/禁用角色。但是當角色被添加/刪除時,標籤也應該被添加/刪除。只有當jboss緩存從cli手動刷新或者更糟時纔會發生 - 重新啓動。是否有可能在運行時刪除角色或刷新服務器緩存(當用戶單擊按鈕時)?角色認證是通過'request.isUserInRole()'來完成的,但我需要的是類似於setUserInRole(「admin」)= false的東西。是否有可能在運行時刪除jboss中的角色或刷新緩存?
0
A
回答
0
這就是我解決這個問題的方法。
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);
}
}
+0
是您的服務器以獨立模式還是域模式運行?因爲我在域模式下出現以下錯誤:2017-07-03 15:14:39,397錯誤[ch.bls.lopas.server.resource.ConnectionTestResource](默認任務-8)清空緩存時出錯:WFLYJMX0019:未命名操作「刷新緩存」 – puzste
0
對於使用JBoss CLI那些我想通了這個命令上面做的等價物。在下面的命令中,我使用的是域配置,但類似的情況應該適用於單個服務器。
/主機= MYHOST /服務器= MyServer的/子系統=安全/安全域=其他:齊平安緩存(主要= UserToFlush)
相關問題
- 1. 是否有可能在運行時
- 2. 刷新緩存角SPA
- 3. 刷新鏡像或清除緩存
- 4. 是否有可能在REBOL或紅色
- 5. Couchbase:是否有可能存在過時的低溫緩存?
- 6. 何時刷新UIView?是否有可能強制中功能刷新?
- 7. 真的不可能在運行時刪除任何JDialog或JWindow
- 8. 是否有可能在運行時更新程序集版本?
- 9. 在角度緩存和刷新數據
- 10. 是否可以在Azure Web角色中運行SQL Express?
- 11. 是否有可編程地刷新log4net中的緩衝區
- 12. 是否有可能清除使用JavaScript的瀏覽器緩存?
- 13. Eclipse是否有任何緩存或可能損壞的設置
- 14. 是否有可能在.NET中運行時編譯和執行新代碼?
- 15. 緩存功能的可能值在運行時
- 16. 在SSL握手中,是否有可能顛倒角色?
- 17. 是否有可能在運行時重新初始化Spring中的bean?
- 18. RICH:dataTable的 - 刷新刪除行
- 19. 在Spring中刷新緩存
- 20. 是否有可能確定R是否在Unix或Windows環境中運行
- 21. JBOSS 5.1是否在JDK 1.4中運行?
- 22. 是否可以從PHP APC緩存中刪除單個文件?
- 23. 是否有可能在PowerShell上同時刪除多個目錄?
- 24. 同時刷新緩存
- 25. 在量角器中,是否可以運行Angular模塊功能?
- 26. Dot net 3.5:appconfig是否在運行時在緩存中動態更新?
- 27. 不能刪除我創建PostgreSQL中角色的PostgreSQL角色
- 28. 緩存絕對過期是否保證緩存在確切時間被刪除?
- 29. 在刷新時從angularjs中刪除hashbang
- 30. 是否有可能在Android或Blackberry上運行applet?
我估計沖洗緩存和從JBoss服務器刪除用戶角色是兩個獨立的事情,可以是兩個不同的問題,但因爲這兩個解決方案都可以工作,所以請耐心等待。 – giorgimode