Apache Shiro:动态启用/禁用领域

时间:2017-10-03 07:56:19

标签: java shiro

Java EE 8 Web应用程序可以有多个领域:一个始终为内部用户存储启用,另一个用于针对AD的auth / author(例如)。

因此,领域列表如下:

  1. 领域1:LocalUserRealm扩展了AuthorizingRealm
  2. 领域2:ActiveDirectoryRealm(可选,应通过应用程序启用并配置,提供所需的设置:ldap url,usr,pwd等)
  3. 目前,shiro.ini如下所示:

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

    问题:在按下应用程序中的按钮之后,启用/禁用可选adRealm的最佳方法是什么?启用AD集成" /"禁用AD集成"?

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

1 个答案:

答案 0 :(得分:2)

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