第十一节 CAS服务端RememberMe

阅读更多

 

关于启用RememberMe功能所需做的修改描述

 

 

  1. /** 
  2.  * @see CAS服务端RememberMe 
  3.  * @see ------------------------------------------------------------------------------------------------------------------------ 
  4.  * @see 关于RememberMe,可参考官方文档,网址如下(下面两个网址描述的RememberMe实现都是一样的,只是第二个还有其它描述) 
  5.  * @see http://jasig.github.io/cas/development/installation/Configuring-LongTerm-Authentication.html 
  6.  * @see http://jasig.github.io/cas/4.0.x/installation/Configuring-Authentication-Components.html#long-term-authentication 
  7.  * @see RememberMe也就是平时所说的记住密码的功能,可以让用户登录成功后,关闭浏览器再重新打开浏览器访问应用时不需要再次登录 
  8.  * @see RememberMe与上面的Session超时配置tgt.timeToKillInSeconds是两回事,Session超时是针对一次会话而言,RememberMe则更广 
  9.  * @see 另外本文的CAS-4.0.3服务端源码修改,是在我的以下三篇博文基础上修改的,最终我会在CSDN上提供整体源码下载 
  10.  * @see http://blog.csdn.net/jadyer/article/details/46875393 
  11.  * @see http://blog.csdn.net/jadyer/article/details/46914661 
  12.  * @see http://blog.csdn.net/jadyer/article/details/46916169 
  13.  * @see 具体修改步骤如下 
  14.  * @see 1.cas.properties中新增配置项rememberMeDuration=1209600 
  15.  * @see 2.ticketExpirationPolicies.xml中新增RememberMe过期策略的配置 
  16.  * @see 3.ticketGrantingTicketCookieGenerator.xml中新增属性项p:rememberMeMaxAge="${rememberMeDuration:1209600}" 
  17.  * @see 4.deployerConfigContext.xml 
  18.  * @see 5.casLoginView.jsp表单中增加rememberMe字段 
  19.  * @see 6.login-webflow.xml增加接收表单rememberMe字段的配置 
  20.  * @see 7.UsernamePasswordCaptchaCredential.java集成RememberMeUsernamePasswordCredential使得可以接收表单的rememberMe字段 
  21.  * @see ------------------------------------------------------------------------------------------------------------------------ 
  22.  * @create  @create 2016-6-6 下午08:34:18
  23.  * @author 玄玉 
  24.  */  

 

1.ticketExpirationPolicies.xml的修改

 

 

  1. xml version="1.0" encoding="UTF-8"?>  
  2.   
  3.     <util:constant id="SECONDS" static-field="java.util.concurrent.TimeUnit.SECONDS"/>  
  4.     <bean id="serviceTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"  
  5.           c:numberOfUses="1" c:timeToKill="${st.timeToKillInSeconds:10}" c:timeUnit-ref="SECONDS"/>  
  6.   
  7.       
  8.       
  9.       
  10.       
  11.       
  12.       
  13.       
  14.       
  15.     <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"  
  16.         p:cookieSecure="false"  
  17.         p:cookieMaxAge="-1"  
  18.         p:rememberMeMaxAge="${rememberMeDuration:1209600}"  
  19.         p:cookieName="CASTGC"  
  20.         p:cookiePath="/cas" />  
  21. beans>  

 

 

3.deployerConfigContext.xml修改的部分

 

  1. <bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">  
  2.     <constructor-arg>  
  3.         <map>  
  4.             <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />  
  5.             <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />  
  6.         map>  
  7.     constructor-arg>  
  8.   
  9.     <property name="authenticationPolicy">  
  10.         <bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />  
  11.     property>  
  12.       
  13.       
  14.     <property name="authenticationMetaDataPopulators">  
  15.         <list>  
  16.             <bean class="org.jasig.cas.authentication.SuccessfulHandlerMetaDataPopulator"/>  
  17.             <bean class="org.jasig.cas.authentication.principal.RememberMeAuthenticationMetaDataPopulator"/>  
  18.         list>  
  19.     property>  
  20. bean>  

 

4.login-webflow.xml修改的部分

  1. <view-state id="viewLoginForm" view="casLoginView" model="credential">  
  2.        <binder>  
  3.            <binding property="username"/>  
  4.            <binding property="password"/>  
  5.              
  6.            <binding property="captcha"/>  
  7.              
  8.            <binding property="rememberMe"/>  
  9.        binder>  
  10.        <on-entry>  
  11.            <set name="viewScope.commandName" value="'credential'" />  
  12.        on-entry>  
  13.     <transition on="submit" bind="true" validate="true" to="validateCaptcha">  
  14.            <evaluate expression="authenticationViaCaptchaFormAction.doBind(flowRequestContext, flowScope.credential)" />  
  15.        transition>  
  16. view-state>  

 

 

5.//WEB-INF//view//jsp//star//ui//casLoginView.jsp

 

  1. <tr>  
  2.             <td>  
  3.                 <input type="checkbox" tabindex="4" name="rememberMe" value="true"/>  
  4.                 <label for="warn">RememberMelabel>  
  5.             td>  
  6.         tr>

 

6.最后是cas.properties中增加的rememberMeDuration配置

 

 

  1. #服务端RememberMe的有效期,默认为1209600s,即两周  
  2. rememberMeDuration=120960

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(第十一节 CAS服务端RememberMe)