「這是我參與8月更文挑戰的第9天,活動詳情查看:8月更文挑戰」java
註釋掉 mysql
<!-- <bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao"\
p:backingMap-ref="attrRepoBackingMap" /> -->
<!-- <util:map id="attrRepoBackingMap">
<entry key="uid" value="uid" />\
<entry key="eduPersonAffiliation" value="eduPersonAffiliation" />
<entry key="groupMembership" value="groupMembership" />
<entry>
<key>
<value>memberOf</value>
</key>
<list>
<value>faculty</value>
<value>staff</value>
<value>org</value>\
</list>
</entry>
</util:map> -->
複製代碼
添加代碼:spring
<bean id="attributeRepository"
class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
<constructor-arg index="0" ref="dataSource" />
<constructor-arg index="1"
value="SELECT username,password,email,userId,sex,telPhone,mobileNumber, contents,sysStatus,sysUpDated,sysBack1,sysBack2,sysBack3 FROMDC_US_USERINFO WHERE {0}" />
<property name="queryAttributeMapping">
<map>
<entry key="username" value="username" />
</map>
</property>
<property name="resultAttributeMapping">
<map>
<!--key爲對應的數據庫字段名稱,value爲提供給客戶端獲取的屬性名字,系統會自動填充值 -->
<entry key="username" value="username"></entry>
<entry key="password" value="password"></entry>
<entry key="email" value="email"></entry>
<entry key="userId" value="userId"></entry>
<entry key="sex" value="sex"></entry>
<entry key="telPhone" value="telPhone"></entry>
<entry key="mobileNumber" value="mobileNumber"></entry>
<entry key="contents" value="contents"></entry>
<entry key="sysStatus" value="sysStatus"></entry>
<entry key="sysUpDated" value="sysUpDated"></entry>
<entry key="sysBack1" value="sysBack1"></entry>
<entry key="sysBack2" value="sysBack2"></entry>
<entry key="sysBack3" value="sysBack3"></entry>
</map>
</property>
</bean>
複製代碼
deployerConfigContext.xml的完整代碼:sql
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util" xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<util:map id="authenticationHandlersResolvers">
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
</util:map>
<util:list id="authenticationMetadataPopulators">
<ref bean="successfulHandlerMetaDataPopulator" />
<ref bean="rememberMeAuthenticationMetaDataPopulator" />
</util:list>
<!-- <bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao"
p:backingMap-ref="attrRepoBackingMap" /> -->
<!-- <alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler"
/> -->
<alias name="personDirectoryPrincipalResolver" alias="primaryPrincipalResolver" />
<!-- <util:map id="attrRepoBackingMap"> <entry key="uid" value="uid" />
<entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> <entry
key="groupMembership" value="groupMembership" /> <entry> <key> <value>memberOf</value>
</key> <list> <value>faculty</value> <value>staff</value> <value>org</value>
</list> </entry> </util:map> -->
<bean id="attributeRepository"
class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
<constructor-arg index="0" ref="dataSource" />
<constructor-arg index="1"
value="SELECT username,password,email,userId,sex,telPhone,mobileNumber, contents,sysStatus,sysUpDated,sysBack1,sysBack2,sysBack3 FROM DC_US_USERINFO WHERE {0}" />
<property name="queryAttributeMapping">
<map>
<entry key="username" value="username" />
</map>
</property>
<property name="resultAttributeMapping">
<map>
<!--key爲對應的數據庫字段名稱,value爲提供給客戶端獲取的屬性名字,系統會自動填充值 -->
<entry key="username" value="username"></entry>
<entry key="password" value="password"></entry>
<entry key="email" value="email"></entry>
<entry key="userId" value="userId"></entry>
<entry key="sex" value="sex"></entry>
<entry key="telPhone" value="telPhone"></entry>
<entry key="mobileNumber" value="mobileNumber"></entry>
<entry key="contents" value="contents"></entry>
<entry key="sysStatus" value="sysStatus"></entry>
<entry key="sysUpDated" value="sysUpDated"></entry>
<entry key="sysBack1" value="sysBack1"></entry>
<entry key="sysBack2" value="sysBack2"></entry>
<entry key="sysBack3" value="sysBack3"></entry>
</map>
</property>
</bean>
<alias name="serviceThemeResolver" alias="themeResolver" />
<alias name="jsonServiceRegistryDao" alias="serviceRegistryDao" />
<alias name="defaultTicketRegistry" alias="ticketRegistry" />
<alias name="ticketGrantingTicketExpirationPolicy" alias="grantingTicketExpirationPolicy" />
<alias name="multiTimeUseOrTimeoutExpirationPolicy" alias="serviceTicketExpirationPolicy" />
<alias name="anyAuthenticationPolicy" alias="authenticationPolicy" />
<alias name="acceptAnyAuthenticationPolicyFactory" alias="authenticationPolicyFactory" />
<bean id="auditTrailManager"
class="org.jasig.inspektr.audit.support.Slf4jLoggingAuditTrailManager"
p:entrySeparator="${cas.audit.singleline.separator:|}"
p:useSingleLine="${cas.audit.singleline:false}" />
<alias name="neverThrottle" alias="authenticationThrottle" />
<util:list id="monitorsList">
<ref bean="memoryMonitor" />
<ref bean="sessionMonitor" />
</util:list>
<alias name="defaultPrincipalFactory" alias="principalFactory" />
<alias name="defaultAuthenticationTransactionManager" alias="authenticationTransactionManager" />
<alias name="defaultPrincipalElectionStrategy" alias="principalElectionStrategy" />
<alias name="tgcCipherExecutor" alias="defaultCookieCipherExecutor" />
<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${database.driverClass}</value>
</property>
<property name="url">
<value>${database.url}</value>
</property>
<property name="username">
<value>${database.user}</value>
</property>
<property name="password">
<value>${database.password}</value>
</property>
</bean>
<!-- mysql 鏈接-->
<!--
<bean name="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
p:driverClass="${database.driverClass}" p:jdbcUrl="${database.url}" p:user="${database.user}"
p:password="${database.password}" p:initialPoolSize="${database.pool.minSize}"
p:minPoolSize="${database.pool.minSize}" p:maxPoolSize="${database.pool.maxSize}"
p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}" p:checkoutTimeout="${database.pool.maxWait}"
p:acquireIncrement="${database.pool.acquireIncrement}" p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}"
p:acquireRetryDelay="${database.pool.acquireRetryDelay}" p:idleConnectionTestPeriod="${database.pool.idleConnectionTestPeriod}"
p:preferredTestQuery="${database.pool.connectionHealthQuery}"/> -->
<!-- <alias name="queryDatabaseAuthenticationHandler" alias="primaryAuthenticationHandler"
/> <alias name="dataSource" alias="queryDatabaseDataSource" /> -->
<alias name="searchModeSearchDatabaseAuthenticationHandler"
alias="primaryAuthenticationHandler" />
<alias name="dataSource" alias="searchModeDatabaseDataSource" />
</beans>
複製代碼
此文件是將用戶登陸成功後,將信息生成XML傳遞給客戶端,原文件是隻包含name信息,因此須要修改,新增獲取其餘屬性的代碼以下:數據庫
<!-- 在server驗證成功後,這個頁面負責生成與客戶端交互的xml信息,在默認的casServiceValidationSuccess.jsp中,只包括用戶名,並不提供其餘的屬性信息,所以須要對頁面進行擴展 -->
<c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">
<cas:attributes>
<c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</cas:attributes>
</c:if>
複製代碼
casServiceValidationSuccess.jsp完整代碼:apache
<%@ page session="false" contentType="application/xml; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>${fn:escapeXml(principal.id)}</cas:user>
<c:if test="${not empty pgtIou}">
<cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket>
</c:if>
<c:if test="${fn:length(chainedAuthentications) > 0}">
<cas:proxies>
<c:forEach var="proxy" items="${chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(chainedAuthentications)}" step="1">
<cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy>
</c:forEach>
</cas:proxies>
</c:if>
<c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">
<cas:attributes>
<c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
</c:forEach>
</cas:attributes>
</c:if>
</cas:authenticationSuccess>
</cas:serviceResponse>
複製代碼
3.因爲我使用shiro ,因此client 中獲取代碼以下:json
Subject subject = SecurityUtils.getSubject();
Map attributes = (Map) subject.getPrincipals().asList().get(1);
//獲取id
String userId=(String) attributes.get("userId");
StringtelPhone=(String) attributes.get("telPhone")
複製代碼