CAS 返回多个信息为空

Posted on

CAS 返回多个信息为空 - - ITeye技术网站 (2)

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼

招聘 搜索

您还未登录 ! 登录 注册

liuzhiyi7288

CAS 返回多个信息为空 **

CAS client 端使用Filter 获得server端传回的信息,如果多个信息使用: Java代码 收藏代码

  1. assertion.getPrincipal().getAttributes()
    assertion.getPrincipal().getAttributes()来获得一个Map,但是有的时候Map中没有数据为null; 解决方案:配置deployerConfigContext.xml中名称为serviceRegistryDao的bean,如下 Java代码 收藏代码

  2. <bean class="org.jasig.cas.services.RegisteredServiceImpl"
  3. p:id="1"
  4. p:description="test"
  5. p:serviceId="http://192.168.104.101:8080//*"
  6. p:enabled="true"
  7. p:ssoEnabled="true"
  8. p:anonymousAccess="false">

  9. ,其中最重要的配置为: 这个属性决定了我们在client端获得map是否为null,如果不配置该属性则为null,该属性配置我们返回多个信息对应的key; 此处对应CAS SERVER端源码如下 CentralAuthenticationServiceImpl.java: Java代码 收藏代码

  10. // 获得deployerConfigContext.xml中serviceRegistryDao配置的registeredServices

  11. final RegisteredService registeredService = this.servicesManager
  12. .findServiceBy(service);
    // 获得deployerConfigContext.xml中serviceRegistryDao配置的registeredServices final RegisteredService registeredService = this.servicesManager .findServiceBy(service); allowwedAttributes配置对应的代码如下: Java代码 收藏代码

  13. ///

  14. /* 从principal.getAttributes()获得map后,获取registeredService的allowedAttributes属性,
  15. /* 可以对应的key存入返回客户端信息的中map中
  16. /*/
  17. for (final String attribute : registeredService
  18. .getAllowedAttributes()) {
  19. final Object value = principal.getAttributes().get(
  20. attribute);
  21. if (value != null) {
  22. attributes.put(attribute, value);
  23. }
  24. }
  25. final Principal modifiedPrincipal = new SimplePrincipal(
  26. principalId, attributes);
  27. final MutableAuthentication mutableAuthentication = new MutableAuthentication(
  28. modifiedPrincipal);
    /// / 从principal.getAttributes()获得map后,获取registeredService的allowedAttributes属性, / 可以对应的key存入返回客户端信息的中map中 /*/ for (final String attribute : registeredService .getAllowedAttributes()) { final Object value = principal.getAttributes().get( attribute); if (value != null) { attributes.put(attribute, value); } } final Principal modifiedPrincipal = new SimplePrincipal( principalId, attributes); final MutableAuthentication mutableAuthentication = new MutableAuthentication( modifiedPrincipal);; 希望对大家有所帮助 分享到:

CAS client 端添加初始化参数传到server端 | CAS 集成java 登录成功后空白页面

评论

1 楼 solomon 2011-10-31

不错,雪中送炭。 

发表评论

您还没有登录,请您登录后再发表评论

liuzhiyi7288的博客

liuzhiyi7288

mzmingly的博客

mzmingly

hasker的博客

hasker ninisui的博客

ninisui

dawnstars的博客

dawnstars

文章分类

存档分类

最新评论

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途