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/