本文整理汇总了Java中org.apache.shiro.subject.MutablePrincipalCollection类的典型用法代码示例。如果您正苦于以下问题:Java MutablePrincipalCollection类的具体用法?Java MutablePrincipalCollection怎么用?Java MutablePrincipalCollection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MutablePrincipalCollection类属于org.apache.shiro.subject包,在下文中一共展示了MutablePrincipalCollection类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: createAuthenticationInfo
import org.apache.shiro.subject.MutablePrincipalCollection; //导入依赖的package包/类
@Override
protected AuthenticationInfo createAuthenticationInfo(AuthenticationToken token, Object ldapPrincipal, Object ldapCredentials, LdapContext ldapContext) throws NamingException {
SimpleAuthenticationInfo authenticationInfo = (SimpleAuthenticationInfo) super.createAuthenticationInfo(token, ldapPrincipal, ldapCredentials, ldapContext);
MutablePrincipalCollection mpc = (MutablePrincipalCollection) authenticationInfo.getPrincipals();
final SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
// get all attributes
constraints.setReturningAttributes(null);
String templ = getUserDnTemplate();
String userDn = MessageFormat.format(templ, mpc.getPrimaryPrincipal());
final NamingEnumeration<SearchResult> answer = ldapContext.search(userDn, "(objectClass=*)", constraints);
if (answer.hasMore()) {
Attributes attrs = answer.next().getAttributes();
if (answer.hasMore()) {
throw new NamingException("Non-unique user specified by:" + userDn);
}
//TODO: make this Guicy
User user = new UserFromLdap(attrs, mpc);
// at present there should only be one realm involved.
Iterator<String> realmIter = mpc.getRealmNames().iterator();
String firstRealm = realmIter.next();
if (realmIter.hasNext()) {
// ugh, need a new solution here
String explanation = String.format("More than one realm found! (%s and %s)", firstRealm, realmIter.next());
throw new NamingException(explanation);
}
mpc.add(user,firstRealm);
} else {
throw new NamingException("Invalid User specified by:" + userDn);
}
return authenticationInfo;
}
开发者ID:nsoft,项目名称:jesterj,代码行数:37,代码来源:JndiLdapRealmWithUser.java
示例2: merge
import org.apache.shiro.subject.MutablePrincipalCollection; //导入依赖的package包/类
/**
* Takes the specified <code>info</code> argument and adds its principals and credentials into this instance.
*
* @param info the <code>AuthenticationInfo</code> to add into this instance.
*/
@SuppressWarnings("unchecked")
public void merge(AuthenticationInfo info) {
if (info == null || info.getPrincipals() == null || info.getPrincipals().isEmpty()) {
return;
}
if (this.principals == null) {
this.principals = info.getPrincipals();
} else {
if (!(this.principals instanceof MutablePrincipalCollection)) {
this.principals = new SimplePrincipalCollection(this.principals);
}
((MutablePrincipalCollection) this.principals).addAll(info.getPrincipals());
}
//only mess with a salt value if we don't have one yet. It doesn't make sense
//to merge salt values from different realms because a salt is used only within
//the realm's credential matching process. But if the current instance's salt
//is null, then it can't hurt to pull in a non-null value if one exists.
//
//since 1.1:
if (this.credentialsSalt == null && info instanceof SaltedAuthenticationInfo) {
this.credentialsSalt = ((SaltedAuthenticationInfo) info).getCredentialsSalt();
}
Object thisCredentials = getCredentials();
Object otherCredentials = info.getCredentials();
if (otherCredentials == null) {
return;
}
if (thisCredentials == null) {
this.credentials = otherCredentials;
return;
}
if (!(thisCredentials instanceof Collection)) {
Set newSet = new HashSet();
newSet.add(thisCredentials);
setCredentials(newSet);
}
// At this point, the credentials should be a collection
Collection credentialCollection = (Collection) getCredentials();
if (otherCredentials instanceof Collection) {
credentialCollection.addAll((Collection) otherCredentials);
} else {
credentialCollection.add(otherCredentials);
}
}
开发者ID:xuegongzi,项目名称:rabbitframework,代码行数:57,代码来源:SimpleAuthenticationInfo.java
示例3: merge
import org.apache.shiro.subject.MutablePrincipalCollection; //导入依赖的package包/类
@SuppressWarnings("unchecked")
public void merge(AuthenticationInfo info) {
if (info == null || info.getPrincipals() == null || info.getPrincipals().isEmpty()) {
return;
}
if (this.principals == null) {
this.principals = info.getPrincipals();
} else {
if (!(this.principals instanceof MutablePrincipalCollection)) {
this.principals = new SimplePrincipalCollection(this.principals);
}
((MutablePrincipalCollection) this.principals).addAll(info.getPrincipals());
}
if (this.credentialsSalt == null && info instanceof SaltedAuthenticationInfo) {
this.credentialsSalt = ((SaltedAuthenticationInfo) info).getCredentialsSalt();
}
Object thisCredentials = getCredentials();
Object otherCredentials = info.getCredentials();
if (otherCredentials == null) {
return;
}
if (thisCredentials == null) {
this.credentials = otherCredentials;
return;
}
if (!(thisCredentials instanceof Collection)) {
Set<Object> newSet = new HashSet<>();
newSet.add(thisCredentials);
setCredentials(newSet);
}
// At this point, the credentials should be a collection
Collection<Object> credentialCollection = (Collection<Object>) getCredentials();
if (otherCredentials instanceof Collection) {
credentialCollection.addAll((Collection<Object>) otherCredentials);
} else {
credentialCollection.add(otherCredentials);
}
}
开发者ID:nano-projects,项目名称:nano-framework,代码行数:46,代码来源:SimpleAuthenticationInfo.java
注:本文中的org.apache.shiro.subject.MutablePrincipalCollection类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论