• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java MutablePrincipalCollection类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java DidCloseTextDocumentParams类代码示例发布时间:2022-05-23
下一篇:
Java ScalarFunctionImpl类代码示例发布时间:2022-05-23
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap