public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest req = ServletActionContext.getRequest();
if (req.getSession().getAttribute("XXX") == null) {
return "login";
} else {
return invocation.invoke();
}
}用了struts的拦截器来阻止未登录用户自己访问action,session失效就跳转到登录页面,可有个问题后台的请求的方式全是AJAX如果session失效,就不会刷新也就是不会跳转至登录页面,求问下这种情况应该咋解决。
------解决思路----------------------
判断请求的URL,如果是ajax的URL,直接放行
------解决思路----------------------
对于ajax的请求,后台是不可能做到让前端跳转页面的.
一定要这么做的话,只能:
后台返回固定的错误码,前端对应,封装ajax方法
------解决思路----------------------
谁告诉你 Ajax 请求 拦截不到的? 谁告诉你 不能跳转到登陆页面的?
你直接在拦截器里面 写JS代码 给前台一个提示框 然后就跳了呗
------解决思路----------------------
把 return "login";去掉 用下面这样跳
ActionContext act = invocation.getInvocationContext();
HttpServletResponse response = (HttpServletResponse) act.get(ServletActionContext.HTTP_RESPONSE);
response.sendRedirect("login.jsp");