cas4.0 session中返回更多的用戶信息

實現思路:
新增AccoutAttributeDao類繼承StubPersonAttributeDao,重寫getPerson方法。實際應用中咱們只須要修改getPersion方法中的內容,根據實際狀況,修改查詢語句。須要哪些字段經過attributes.put存放進去。
注意:中文須要使用URLEncoder.encode進行編碼,在使用的地方使用URLDecode.decode進行解碼

//uid對應的是登陸頁面的username
public IPersonAttributes getPerson(String uid) {
  String sql = "";
  sql = "select * from sys_right_user where user_account =?";
  final Map values = jdbcTemplate.queryForMap(sql, uid);
  Map<String, List<Object>> attributes = new HashMap<String, List<Object>>();
  List<Object> o = Collections.singletonList((Object)URLEncoder.encode(String.valueOf(values.get("user_name"))));
  
  attributes.put("username",o);
  attributes.put("email",Collections.singletonList((Object) values.get("email")));
  attributes.put("mobile",Collections.singletonList((Object) values.get("mobile")));
  attributes.put("userid",Collections.singletonList((Object) values.get("user_id")));
  return new AttributeNamedPersonImpl(attributes);
}

修改deployerConfigContext.xml 中 attributeRepository的class :
並配置好jdbcTemplate
    <bean id="attributeRepository" class="org.jasig.services.persondir.support.AccoutAttributeDao" >
     <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>
     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
       <property name="dataSource">  
            <ref bean="queryDatabaseDataSource" />  
        </property>  
    </bean>

修改\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp,參考附件中的頁面。
獲取變量的方法:
Object object =session.getAttribute("_const_cas_assertion_");
Assertion assertion =(Assertion)object;
Map<String, Object> map  = assertion.getPrincipal().getAttributes()
經過map.get("email")來獲取。java

相關文章
相關標籤/搜索