﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Knight of the round table-文章分类-Java Security</title><link>http://www.blogjava.net/wansong/category/45738.html</link><description>wansong</description><language>zh-cn</language><lastBuildDate>Sat, 21 Jan 2012 15:10:59 GMT</lastBuildDate><pubDate>Sat, 21 Jan 2012 15:10:59 GMT</pubDate><ttl>60</ttl><item><title>Glassfish v2 替换及使用自定义证书</title><link>http://www.blogjava.net/wansong/articles/368744.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 19 Jan 2012 04:55:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/368744.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/368744.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/368744.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/368744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/368744.html</trackback:ping><description><![CDATA[<div>http://www.iteye.com/topic/235907</div><img src ="http://www.blogjava.net/wansong/aggbug/368744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2012-01-19 12:55 <a href="http://www.blogjava.net/wansong/articles/368744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>session 超时问题处理 ajax(Extjs) </title><link>http://www.blogjava.net/wansong/articles/335116.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 14 Oct 2010 05:12:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/335116.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/335116.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/335116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/335116.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/335116.html</trackback:ping><description><![CDATA[<div class="blog_title">
<div class="date"><span class="year">2009</span><span class="sep_year">-</span><span class="month">11</span><span class="sep_month">-</span><span class="day">26</span></div>
<h3><a href="http://juchanghuan.javaeye.com/blog/527935">Extjs session 超时问题处理</a></h3>
关键字: extjs session 超时问题处理 </div>
<div class="blog_content">
<p>对于普通的http请求，可以通过过滤器Filter来判断session超时，然后跳转到登录页面；但是对于Ajax请求，则不会如期待的那样自动转到登录页面（我试了网站上的许多种方案，都是停留在当前页面），好不容易找一篇，但是代码还是有点问题，不能运行，自己修改了下，并测试通过，所以拿出来分享下。 <br />
不论是普通http请求还是ajax请求，都可以通过过滤器/拦截器来将请求捕获，而且区分这两种请求在于头部信息的不同：普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息，而异步的有。</p>
<p>&nbsp;</p>
<p>自己定义一个Filter，然后在doFilter()中加如下代码：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://juchanghuan.javaeye.com/blog/527935#"><img alt="复制代码" src="http://juchanghuan.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">if</span><span>&nbsp;(request.getHeader(</span><span class="string">"x-requested-with"</span><span>)&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;request.getHeader(</span><span class="string">"x-requested-with"</span><span>).equalsIgnoreCase(&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//ajax超时处理&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"XMLHttpRequest"</span><span>))&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;response.addHeader(</span><span class="string">"sessionstatus"</span><span>,&nbsp;</span><span class="string">"timeout"</span><span>);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>}</span><span class="keyword">else</span><span>{</span><span class="comment">//http超时的处理&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>}&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">if (request.getHeader("x-requested-with") != null
&amp;&amp; request.getHeader("x-requested-with").equalsIgnoreCase(    //ajax超时处理
"XMLHttpRequest")) {
response.addHeader("sessionstatus", "timeout");
}else{//http超时的处理
}
</pre>
<p>&nbsp;&nbsp;</p>
<p>再在WEB.XML文件中配置这个Filter，并且要放在STRUTS2的StrutsPrepareAndExecuteFilter前面，相关代码：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://juchanghuan.javaeye.com/blog/527935#"><img alt="复制代码" src="http://juchanghuan.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-xml">
    <li><span><span class="tag">&lt;</span><span class="tag-name">filter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>xxxFilter</span><span class="tag">&lt;/</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter-class</span><span class="tag">&gt;</span><span>xx.xxx.xxx.xxxxFilter</span><span class="tag">&lt;/</span><span class="tag-name">filter-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">filter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">filter-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>xxxFilter</span><span class="tag">&lt;/</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>*.jsp</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">filter-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="xml" style="display: none" name="code">&lt;filter&gt;
&lt;filter-name&gt;xxxFilter&lt;/filter-name&gt;
&lt;filter-class&gt;xx.xxx.xxx.xxxxFilter&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;xxxFilter&lt;/filter-name&gt;
&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
</pre>
<p>&nbsp;</p>
<p>在每个功能JS中添加代码：</p>
<p>&nbsp;</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://juchanghuan.javaeye.com/blog/527935#"><img alt="复制代码" src="http://juchanghuan.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-c">
    <li><span><span>Ext.Ajax.on(</span><span class="string">'requestcomplete'</span><span>,checkUserSessionStatus,&nbsp;</span><span class="keyword">this</span><span>);&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">function</span><span>&nbsp;checkUserSessionStatus(conn,response,options)&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span class="keyword">var</span><span>&nbsp;sessionStatus&nbsp;=&nbsp;response.getResponseHeade[</span><span class="string">"sessionstatus"</span><span>];&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="keyword">typeof</span><span>(sessionStatus)&nbsp;!=&nbsp;</span><span class="string">"undefined"</span><span>){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext.Msg.alert(</span><span class="string">'提示'</span><span>,&nbsp;</span><span class="string">'会话超时，请重新登录!'</span><span>,&nbsp;</span><span class="keyword">function</span><span>(btn,&nbsp;text){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(btn&nbsp;==&nbsp;</span><span class="string">'ok'</span><span>){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;redirect&nbsp;=&nbsp;</span><span class="string">'http://localhost:8080/项目名/login.jsp'</span><span>;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location&nbsp;=&nbsp;redirect;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
<img src ="http://www.blogjava.net/wansong/aggbug/335116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-10-14 13:12 <a href="http://www.blogjava.net/wansong/articles/335116.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LDAP</title><link>http://www.blogjava.net/wansong/articles/329075.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 17 Aug 2010 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/329075.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/329075.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/329075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/329075.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/329075.html</trackback:ping><description><![CDATA[<a href="http://man.lupaworld.com/content/manage/ringkee/openldap.htm">http://man.lupaworld.com/content/manage/ringkee/openldap.htm</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
http://www.ibm.com/developerworks/cn/java/j-acegi2/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ldap acegi <br />
<br />
<a href="http://www.zytrax.com/books/ldap/">http://www.zytrax.com/books/ldap/</a>&nbsp;&nbsp; ldap information <br />
<br />
<img src ="http://www.blogjava.net/wansong/aggbug/329075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-08-17 10:36 <a href="http://www.blogjava.net/wansong/articles/329075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sso cas</title><link>http://www.blogjava.net/wansong/articles/327495.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 29 Jul 2010 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/327495.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/327495.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/327495.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/327495.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/327495.html</trackback:ping><description><![CDATA[http://www.po-soft.com/blog/single/67.html
<img src ="http://www.blogjava.net/wansong/aggbug/327495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-07-29 17:32 <a href="http://www.blogjava.net/wansong/articles/327495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Tomcat与JBoss服务器的 执行LDAP权限认证为Java应用程序</title><link>http://www.blogjava.net/wansong/articles/327190.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 27 Jul 2010 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/327190.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/327190.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/327190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/327190.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/327190.html</trackback:ping><description><![CDATA[http://blog.javaflag.com/blog/?p=423
<img src ="http://www.blogjava.net/wansong/aggbug/327190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-07-27 10:11 <a href="http://www.blogjava.net/wansong/articles/327190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sso</title><link>http://www.blogjava.net/wansong/articles/326938.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 23 Jul 2010 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/326938.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/326938.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/326938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/326938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/326938.html</trackback:ping><description><![CDATA[http://www.blogjava.net/Jack2007/archive/2008/04/10/191795.html<br />
<br />
<a href="http://java.e800.com.cn/articles/2008/74/1215158762697_4.html">http://java.e800.com.cn/articles/2008/74/1215158762697_4.html</a>&nbsp; JBoss下的单点登陆（SSO）技术实现分析<br />
<br />
http://www.blogjava.net/security/archive/2006/10/09/73199.html<br />
<br />
<br />
自我实践：<br />
1）根据官方文档配置josso，如下：<br />
<p>&nbsp;&nbsp;&nbsp;&nbsp; gateway install --target D:/apache-tomcat-6.0.26 --platform tc60<br />
&nbsp;&nbsp;&nbsp;&nbsp; agent install --target D:/apache-tomcat-6.0.26 --platform tc60<br />
&nbsp;&nbsp;&nbsp;&nbsp; samples install --target D:/apache-tomcat-6.0.26 --platform tc60</p>
<br />
2）修改D:\jdk1.6.0_13\jre\lib\security\java.security，如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp; login.config.url.1=file:D:/apache-tomcat-6.0.26/conf/jaas.conf<br />
<br />
3）根据josso-credentials.xml中的用户名和密码登录
<img src ="http://www.blogjava.net/wansong/aggbug/326938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2010-07-23 14:41 <a href="http://www.blogjava.net/wansong/articles/326938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>