⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第一个acegi 程式 - 登出、自动cookies登入.htm

📁 acegi+spring最新的分析
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0079)http://caterpillar.onlyfun.net/GossipCN/AcegiGossip/FirstAcegLogoutCookies.html -->
<HTML><HEAD><TITLE>第一个Acegi 程式 - 登出、自动Cookies登入</TITLE><LINK 
href="第一个Acegi 程式 - 登出、自动Cookies登入.files/stdlayout.css" type=text/css 
rel=stylesheet><LINK href="第一个Acegi 程式 - 登出、自动Cookies登入.files/print.css" 
type=text/css rel=stylesheet>
<META http-equiv=content-type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY>
<H3><A 
href="http://caterpillar.onlyfun.net/GossipCN/index.html">http://caterpillar.onlyfun.net/GossipCN/index.html</A></H3>
<H1><A 
href="http://caterpillar.onlyfun.net/GossipCN/AcegiGossip/AcegiGossip.html">Acegi 
Gossip:&nbsp;第一个Acegi 程式 -&nbsp;登出、自动Cookies登入</A></H1>在完成 <A 
href="http://caterpillar.onlyfun.net/GossipCN/AcegiGossip/FirstAcegPage.html">第一个Acegi 
程式 - 表单网页</A> 
之后,您已经可以使用Acegi来保护您所设定的资源,为了方便起见,您应该提供一个登出的链结,让使用者可以登出,让目前的对话失效。<BR><BR>这可以在/WEB-INF/loginsuccess.jsp上加上一个登出的链结,动作的目的地是j_acegi_logout:<BR>
<UL>
  <LI>loginsuccess.jsp </LI></UL><PRE>&lt;%@page contentType="text/html"%&gt;<BR>&lt;%@page pageEncoding="UTF-8"%&gt;<BR>&lt;%@ page import="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"%&gt;<BR><BR><BR>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<BR>   "http://www.w3.org/TR/html4/loose.dtd"&gt;<BR><BR>&lt;html&gt;<BR>    &lt;head&gt;<BR>        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<BR>        &lt;title&gt;登入成功&lt;/title&gt;<BR>    &lt;/head&gt;<BR>    &lt;body&gt;<BR>        <BR>    &lt;h1&gt;欢迎 &lt;%= session.getAttribute(AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY) %&gt;<BR>    &lt;/h1&gt;<BR>    &lt;br&gt;&lt;a href="<SPAN style="FONT-WEIGHT: bold">../j_acegi_logout</SPAN>"&gt;登出&lt;/a&gt;<BR>    &lt;/body&gt;<BR>&lt;/html&gt;</PRE><BR>要进行登出,可以设定org.acegisecurity.ui.logout.LogoutFilter,指定登出后的显示页面,以及执行登出动作的处理者:<BR>
<UL>
  <LI>acegi-config.xml </LI></UL><PRE>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<BR>&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;<BR>&lt;beans&gt;<BR>    ... 先前设定相同 <BR><BR><SPAN style="FONT-WEIGHT: bold">    &lt;!-- 登出处理 --&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter"&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;constructor-arg value="/acegilogin.jsp"/&gt; &lt;!-- 登出后的显示页面 --&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">            &lt;constructor-arg&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">               &lt;list&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">                   &lt;bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">               &lt;/list&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;/constructor-arg&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;/bean&gt; </SPAN><BR>    <BR>    &lt;!-- Filter Chain --&gt;<BR>     &lt;bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"&gt;  <BR>       &lt;property name="filterInvocationDefinitionSource"&gt;  <BR>          &lt;value&gt;  <BR>            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON <BR>            PATTERN_TYPE_APACHE_ANT <BR>            /**=authenticationProcessingFilter,exceptionTranslationFilter,filterSecurityInterceptor,<SPAN style="FONT-WEIGHT: bold">logoutFilter</SPAN><BR>         &lt;/value&gt; <BR>      &lt;/property&gt; <BR>    &lt;/bean&gt;    <BR>&lt;/beans&gt;   </PRE><BR>这样就OK了,登入之后,您就可以看到登出的链结,按下该链结后就可自动进行登出。<BR><BR>如果要执行Cookies自动登入,则可以使用org.acegisecurity.ui.rememberme.RememberMeProcessingFilter,您要提供验证管理员与RememberMeServices,并指定Cookie名称,例如:<BR>
<UL>
  <LI>acegi-config.xml </LI></UL><PRE>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<BR>&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;<BR>&lt;beans&gt;<BR>    ....<BR><BR>    &lt;!-- 验证管理员,管理验证资讯提供者 --&gt;<BR>   &lt;bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"&gt;  <BR>      &lt;property name="providers"&gt;&lt;!-- 可有多个提供者,其中一个验证通过即可以了 --&gt;  <BR>         &lt;list&gt;  <BR>            &lt;ref local="daoAuthenticationProvider"/&gt; <BR><SPAN style="FONT-WEIGHT: bold">            &lt;ref local="rememberMeAuthenticationProvider"/&gt;</SPAN><BR>         &lt;/list&gt;  <BR>      &lt;/property&gt;  <BR>   &lt;/bean&gt;<BR><BR>    .....<BR><BR><SPAN style="FONT-WEIGHT: bold">    &lt;!-- 利用cookie自动登入 --&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;bean id="rememberMeProcessingFilter"  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">           class="org.acegisecurity.ui.rememberme.RememberMeProcessingFilter"&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;property name="authenticationManager"  ref="authenticationManager"/&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;property name="rememberMeServices" ref="rememberMeServices"/&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;/bean&gt;      </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;bean id="rememberMeServices"  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">           class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices"&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;property name="userDetailsService" ref="inMemoryDaoImpl"/&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;property name="key" value="javauser"/&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;/bean&gt;</SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;bean id="rememberMeAuthenticationProvider"  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">           class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider"&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">        &lt;property name="key" value="javauser"/&gt;  </SPAN><BR style="FONT-WEIGHT: bold"><SPAN style="FONT-WEIGHT: bold">    &lt;/bean&gt;   </SPAN><BR>    <BR>    &lt;!-- 登出处理 --&gt;  <BR>    &lt;bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter"&gt;  <BR>        &lt;constructor-arg value="/acegilogin.jsp"/&gt; &lt;!-- 登出后的显示页面 --&gt;  <BR>            &lt;constructor-arg&gt;  <BR>               &lt;list&gt;  <BR>                   &lt;bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/&gt;  <BR>               &lt;/list&gt;  <BR>        &lt;/constructor-arg&gt;  <BR>    &lt;/bean&gt; <BR>    <BR>    ...<BR><BR>    &lt;!-- Filter Chain --&gt;<BR>     &lt;bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"&gt;  <BR>       &lt;property name="filterInvocationDefinitionSource"&gt;  <BR>          &lt;value&gt;  <BR>            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON <BR>            PATTERN_TYPE_APACHE_ANT <BR>            /**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,exceptionTranslationFilter,<BR>                 filterSecurityInterceptor,logoutFilter,<SPAN style="FONT-WEIGHT: bold">rememberMeProcessingFilter</SPAN><BR>         &lt;/value&gt; <BR>      &lt;/property&gt; <BR>    &lt;/bean&gt;    <BR>&lt;/beans&gt;   </PRE><BR>要进行自动登入,您必须在登入时发送_acegi_security_remember_me请求参数,例如修改acegilogin.jsp:<BR>
<UL>
  <LI>acegilogin.jsp </LI></UL><PRE>&lt;%@page contentType="text/html"%&gt;<BR>&lt;%@page pageEncoding="UTF-8"%&gt;<BR>&lt;html&gt;<BR>&lt;head&gt;<BR>&lt;title&gt;Acegi 范例网页 - 登入&lt;/title&gt;<BR>&lt;/head&gt;<BR>&lt;body&gt;<BR>&lt;h2&gt;登入范例应用程式!&lt;/h2&gt;<BR>&lt;br /&gt;<BR>&lt;form action="j_acegi_security_check" method="POST"&gt;<BR>&lt;table&gt;<BR>	&lt;tr&gt;<BR>		&lt;td&gt;名称:&lt;/td&gt;<BR>		&lt;td&gt;&lt;input type='text' name='j_username' value=''&gt;&lt;/td&gt;<BR>	&lt;/tr&gt;<BR>	&lt;tr&gt;<BR>		&lt;td&gt;密码:&lt;/td&gt;<BR>		&lt;td&gt;&lt;input type='password' name='j_password'&gt;&lt;/td&gt;<BR>	&lt;/tr&gt;<BR>        &lt;tr&gt;<BR>                &lt;td&gt;<BR><SPAN style="FONT-WEIGHT: bold">                    &lt;input type="checkbox" name="_acegi_security_remember_me"&gt;</SPAN><BR>                &lt;/td&gt;<BR>                &lt;td&gt;2周内记得我&lt;/td&gt;<BR>        &lt;/tr&gt;  <BR>	&lt;tr&gt;<BR>		&lt;td&gt;&lt;input name="reset" type="reset"&gt;&lt;/td&gt;<BR>		&lt;td&gt;&lt;input name="submit" type="submit"&gt;&lt;/td&gt;<BR>	&lt;/tr&gt;        <BR>&lt;/table&gt;<BR>&lt;/form&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</PRE><BR><BR><BR></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -