ApacheShiro多域身份验证&x2B;找出进行身份验证的领域

ApacheShiro多域身份验证&x2B;找出进行身份验证的领域,shiro,Shiro,我有两个可能的领域来验证我的Web应用程序中的用户 以下是我的shiro.ini中的几行: securityManager.realms = $ldapRealm, $saltedJdbcRealm strategy = org.apache.shiro.authc.pam.FirstSuccessfulStrategy securityManager.authenticator.authenticationStrategy = $strategy 认证在这两个领域都很好,FirstSucce

我有两个可能的领域来验证我的Web应用程序中的用户

以下是我的shiro.ini中的几行:

securityManager.realms = $ldapRealm, $saltedJdbcRealm
strategy = org.apache.shiro.authc.pam.FirstSuccessfulStrategy
securityManager.authenticator.authenticationStrategy = $strategy
认证在这两个领域都很好,FirstSuccessfulStrategy也很好

executeLogin()
方法中的自定义AuthenticationFilter中,我使用以下代码进行登录:

Subject currentUser = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
currentUser.login(token);
在执行.login()方法后,我现在如何确定哪个领域负责身份验证

如果用户是通过LDAP域进行身份验证的,那么我想从LDAP获取更多关于用户的信息

有人知道怎么做吗?

Subject subj=SecurityUtils.getSubject()
Subject subj = SecurityUtils.getSubject()
SimplePrincipalCollection spc = (SimplePrincipalCollection) subj.getPrincipals();
Set<String> realmNames = spc.getRealmNames();
SimplePrincipalCollection spc=(SimplePrincipalCollection)subc.getPrincipals(); Set realmNames=spc.getRealmNames();
realmNames
变量应包含一个元素,即对用户进行身份验证的领域

如果您的领域实现是标准的,那么在用户通过身份验证时创建的
SimpleAuthenticationInfo
将使用成功验证用户身份的领域的名称创建