ExtJs Sessionの期限切れ
2181 ワード
参考:http://lym6520.iteye.com/blog/871092
1.Extは下記のコードを追加します。
1.Extは下記のコードを追加します。
Ext.Ajax.defaultHeaders = {
'Request-By': 'Ext' // ajax
};
Ext.Ajax.on('requestcomplete',function(conn,response,options){
var json = Ext.decode(response.responseText);
if(typeof json == 'object'
&& !json.success
&& json.timeout){
alert('<fmt:message key="msgBox.loginerror.timeout"/>');
window.location.href = 'login.jsp';
}
});
2.Filterコード:public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
List<String> list = new ArrayList<String>();
list.add(loginUrl);
list.add("/login");
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
String path = httpServletRequest.getServletPath();
User user = (User) httpServletRequest.getSession().getAttribute("user");
if (!list.contains(path) && user == null) {
String ext = httpServletRequest.getHeader("Request-By");
if (ext != null && ext.equalsIgnoreCase("Ext")) {
servletResponse.addHeader("sessionstatus", "timeout");
PrintWriter out = servletResponse.getWriter();
out.print("{success:false,timeout:true}");
out.flush();
out.close();
} else {
servletResponse.sendRedirect(httpServletRequest.getContextPath() + loginUrl);
}
}
chain.doFilter(request, response);
}
3.Ajax提出かどうか直接判断してもいいです。String head = httpRequest.getHeader("x-requested-with");
if (head != null && !(head.equalsIgnoreCase("XMLHttpRequest"))) {
//Ajax
}