提交 f95f629e 编写于 作者: Skyeye云's avatar Skyeye云

添加ajax请求sessionfilter重定向

上级 594b375a
......@@ -68,7 +68,7 @@ public class AOPOutputObjectput {
if(ToolUtil.isBlank(result)){
Map<String, Object> params = InputObject.getMap();
if("1".equals(params.get("urlUseJurisdiction").toString())){//是否需要登录才能使用 1是 0否 默认为否
if(jedisClient.get("userMation:" + params.get("userToken").toString()) == null){
if(!jedisClient.exists("userMation:" + params.get("userToken").toString())){
OutputObject.setMessage("登录超时,请重新登录。");
}else{
Map<String, Object> userMation = JSONObject.fromObject(jedisClient.get("userMation:" + params.get("userToken").toString()));//用户信息
......
......@@ -3,7 +3,6 @@ package com.skyeye.common.filter;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
......@@ -14,12 +13,13 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.alibaba.fastjson.JSON;
import com.skyeye.common.constans.Constants;
import com.skyeye.common.util.ToolUtil;
import com.skyeye.jedis.JedisClient;
import com.skyeye.jedis.impl.JedisClientCluster;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
......@@ -37,9 +37,6 @@ public class SessionFilter implements Filter {
private static final Logger LOGGER = LoggerFactory.getLogger(SessionFilter.class);
@Autowired
public JedisClient jedisClient;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
......@@ -89,8 +86,11 @@ public class SessionFilter implements Filter {
if(pass){
//用户是否为空判断
if("1".equals(request.getParameter("allUse").toString())){//是否需要登录才能使用 1是 0否 默认为否
if(jedisClient.get("userMation:" + request.getParameter("userToken").toString()) == null){
servletResponse.sendRedirect(Constants.LOGIN_PAGE);
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(servletRequest.getSession().getServletContext());
JedisClient jedisClient = (JedisClient)ac.getBean("jedisClient");
if(!jedisClient.exists("userMation:" + request.getParameter("userToken").toString())){
servletResponse.setHeader("SESSIONSTATUS", "TIMEOUT");
return;
}else{
//重置redis时间
Map<String, Object> userMation = JSONObject.fromObject(jedisClient.get("userMation:" + request.getParameter("userToken").toString()));//用户信息
......@@ -118,15 +118,42 @@ public class SessionFilter implements Filter {
}else{
if(Constants.REQUEST_MAPPING.containsKey(url.replaceAll("/", ""))){
String key = url.replaceAll("/", "");
String allUse = Constants.REQUEST_MAPPING.get(url.replaceAll("/", "")).get("allUse").toString();
url = Constants.REQUEST_MAPPING.get(url.replaceAll("/", "")).get("path").toString();
String queryString = servletRequest.getQueryString();
if(ToolUtil.isBlank(queryString)){
request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse).forward(request, response);
String allUse = Constants.REQUEST_MAPPING.get(key).get("allUse").toString();
if("1".equals(allUse)){//是否需要登录才能使用 1是 0否 默认为否
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(servletRequest.getSession().getServletContext());
JedisClientCluster jedisClient = (JedisClientCluster)ac.getBean("jedisClientCluster");
if(!jedisClient.exists("userMation:" + request.getParameter("userToken").toString())){
servletResponse.setHeader("SESSIONSTATUS", "TIMEOUT");
return;
}else{
//重置redis时间
Map<String, Object> userMation = JSONObject.fromObject(jedisClient.get("userMation:" + request.getParameter("userToken").toString()));//用户信息
List<Map<String, Object>> deskTops = JSONArray.fromObject(jedisClient.get("deskTopsMation:" + request.getParameter("userToken").toString()));//桌面菜单信息
List<Map<String, Object>> allMenu = JSONArray.fromObject(jedisClient.get("allMenuMation:" + request.getParameter("userToken").toString()));//所有菜单信息
jedisClient.set("userMation:" + request.getParameter("userToken").toString(), JSON.toJSONString(userMation));
jedisClient.expire("userMation:" + request.getParameter("userToken").toString(), 1800);//时间为30分钟
jedisClient.set("deskTopsMation:" + request.getParameter("userToken").toString(), JSON.toJSONString(deskTops));
jedisClient.expire("deskTopsMation:" + request.getParameter("userToken").toString(), 1800);//时间为30分钟
jedisClient.set("allMenuMation:" + request.getParameter("userToken").toString(), JSON.toJSONString(allMenu));
jedisClient.expire("allMenuMation:" + request.getParameter("userToken").toString(), 1800);//时间为30分钟
url = Constants.REQUEST_MAPPING.get(key).get("path").toString();
String queryString = servletRequest.getQueryString();
if(ToolUtil.isBlank(queryString)){
request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse).forward(request, response);
}else{
request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse).forward(request, response);
}
}
}else{
request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse).forward(request, response);
url = Constants.REQUEST_MAPPING.get(key).get("path").toString();
String queryString = servletRequest.getQueryString();
if(ToolUtil.isBlank(queryString)){
request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse).forward(request, response);
}else{
request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse).forward(request, response);
}
}
}else{
servletResponse.sendRedirect(Constants.LOGIN_PAGE);
}
......
......@@ -39,7 +39,7 @@ public class HandlerInterceptorMain implements HandlerInterceptor{
new PutObject(request, response);
//用户是否为空判断
if("1".equals(request.getParameter("allUse").toString())){//是否需要登录才能使用 1是 0否 默认为否
if(jedisClient.get("userMation:" + request.getParameter("userToken").toString()) == null){
if(!jedisClient.exists("userMation:" + request.getParameter("userToken").toString())){
return false;
}
}
......
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/eve?characterEncoding=utf-8
jdbc.username=root
jdbc.password=admin
jdbc.password=123456
validationQuery=SELECT 1
jdbc.maxActive=10
......
......@@ -26,6 +26,7 @@
<!-- 配置包扫描器,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->
<context:component-scan base-package="com.skyeye.*.controller" />
<context:component-scan base-package="com.skyeye.common.filter" />
<!-- 配置资源映射 -->
<mvc:resources location="/assets/" mapping="/assets/**"></mvc:resources>
......
......@@ -658,6 +658,14 @@ var AjaxPostUtil = {
// 状态改变的处理
readystatechange: function(xmlhttp) {
var sessionstatus = xmlhttp.getResponseHeader("SESSIONSTATUS");
if (sessionstatus == "TIMEOUT") {//超时跳转
var win = window;
while (win != win.top){
win = win.top;
}
win.location.href = "login.html";//XMLHttpRequest.getResponseHeader("CONTEXTPATH");
}
// 获取返回值
var returnValue;
if(xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 0)) {
......@@ -771,6 +779,14 @@ var AjaxGetUtil = {
// 状态改变的处理
readystatechange: function(xmlhttp) {
var sessionstatus = xmlhttp.getResponseHeader("SESSIONSTATUS");
if (sessionstatus == "TIMEOUT") {//超时跳转
var win = window;
while (win != win.top){
win = win.top;
}
win.location.href = "login.html";//XMLHttpRequest.getResponseHeader("CONTEXTPATH");
}
// 获取返回值
var returnValue;
if(xmlhttp.readyState == 4 && (xmlhttp.status == 200 || xmlhttp.status == 0)) {
......
......@@ -61,8 +61,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="winui-btn" lay-submit lay-filter="formAddMenu">保存</button>
<button class="winui-btn" id="cancle">取消</button>
<button class="winui-btn" lay-submit lay-filter="formAddMenu">保存</button>
</div>
</div>
</form>
......
......@@ -50,8 +50,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="winui-btn" lay-submit lay-filter="formEditMenu">保存</button>
<button class="winui-btn" id="cancle">取消</button>
<button class="winui-btn" lay-submit lay-filter="formEditMenu">保存</button>
</div>
</div>
{{/bean}}
\ No newline at end of file
......@@ -33,7 +33,7 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="winui-btn" lay-submit lay-filter="formAddMenu">确定</button>
<button class="winui-btn" lay-submit lay-filter="formAddMenu">保存</button>
<button class="winui-btn" id="cancle">取消</button>
</div>
</div>
......
......@@ -33,7 +33,7 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="winui-btn" lay-submit lay-filter="formAddMenu">确定</button>
<button class="winui-btn" lay-submit lay-filter="formAddMenu">保存</button>
<button class="winui-btn" id="cancle">取消</button>
</div>
</div>
......
......@@ -16,7 +16,7 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="winui-btn" lay-submit lay-filter="formEditBindRole">保存</button>
<button class="winui-btn" id="cancle">取消</button>
<button class="winui-btn" lay-submit lay-filter="formEditBindRole">保存</button>
</div>
</div>
\ No newline at end of file
......@@ -33,8 +33,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="winui-btn" lay-submit lay-filter="formEditUser">保存</button>
<button class="winui-btn" id="cancle">取消</button>
<button class="winui-btn" lay-submit lay-filter="formEditUser">保存</button>
</div>
</div>
{{/bean}}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册