Java EE 8 Web应用程序可以具有多个领域:一个始终为内部用户存储启用,另一个为针对AD的身份验证/作者启用。

因此,领域列表如下:


领域1:LocalUserRealm扩展了AuthorizingRealm
领域2:ActiveDirectoryRealm(可选,应通过提供所需设置(例如ldap url,usr,pwd等)通过应用启用和配置)


当前,shiro.ini如下所示:

[main]
...
localUserRealm = local.LocalUserRealm
...
adRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
...
securityManager.realms = $localUserRealm, $adRealm


问题:在应用中按“启用AD集成” /“禁用AD集成”之类的按钮后,即时启用/禁用可选adRealm的最佳方法是什么?


在运行时通过SecurityUtils.getSecurityManager().setRealms(realmsList)添加领域的有效方法吗?
禁用/销毁领域的最佳方法是什么(或者通过排除已禁用领域再次使用SecurityUtils.getSecurityManager().setRealms(realmsList))?

最佳答案

您可以在替换它们之前调用getRealms()(如上所述),获取列表的增量。呼叫setRealms(newList)。然后遍历增量并检查Realm是否为Destroyable(如果是),请调用destroy()

关于java - Apache Shiro:动态启用/禁用领域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46539753/

10-09 19:42