Merge remote-tracking branch 'origin/在线访问lhj' into 在线访问lhj

在线访问lhj
李宏杰 8 months ago
commit 2bdc80d6ca

@ -1,55 +1,59 @@
package com.tamguo.web.interceptor; package com.tamguo.web.interceptor;
import java.net.URLEncoder; import java.net.URLEncoder; // 导入用于编码的类
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest; // 导入 Http 请求类
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse; // 导入 Http 响应类
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component; // 标记为组件
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; // 继承的拦截器适配器类
/**
* MemberInterceptor
*/
@Component @Component
public class MemberInterceptor extends HandlerInterceptorAdapter{ public class MemberInterceptor extends HandlerInterceptorAdapter { // 继承自拦截器适配器
/** "重定向 URL"参数名称 */ /** "重定向 URL"参数名称 */
private static final String REDIRECT_URL_PARAMETER_NAME = "redirectUrl"; private static final String REDIRECT_URL_PARAMETER_NAME = "redirectUrl"; // 定义重定向 URL 参数名称
/** 默认登录 URL */ /** 默认登录 URL */
private static final String DEFAULT_LOGIN_URL = "/login.html"; private static final String DEFAULT_LOGIN_URL = "/login.html"; // 定义默认登录 URL
/** 登录 URL */ /** 登录 URL */
private String loginUrl = DEFAULT_LOGIN_URL; private String loginUrl = DEFAULT_LOGIN_URL; // 定义登录 URL
/** /**
* *
* *
* @param request * @param request HttpServletRequest
* HttpServletRequest * @param response HttpServletResponse
* @param response * @param handler
* HttpServletResponse
* @param handler
*
* @return * @return
*/ */
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 重写预处理方法
Object currMember = request.getSession().getAttribute("currMember");
if (currMember != null) { Object currMember = request.getSession().getAttribute("currMember"); // 获取当前会话中的会员对象
return true;
} else { if (currMember!= null) { // 如果会员对象不为空
String requestType = request.getHeader("X-Requested-With"); return true; // 返回 true继续执行
if (requestType != null && requestType.equalsIgnoreCase("XMLHttpRequest")) { } else { // 否则
response.addHeader("loginStatus", "accessDenied");
response.sendError(HttpServletResponse.SC_FORBIDDEN); String requestType = request.getHeader("X-Requested-With"); // 获取请求头中的"X-Requested-With"
return false;
} else { if (requestType!= null && requestType.equalsIgnoreCase("XMLHttpRequest")) { // 如果是 XMLHttpRequest 请求
if (request.getMethod().equalsIgnoreCase("GET")) { response.addHeader("loginStatus", "accessDenied"); // 在响应头中添加登录状态
String redirectUrl = request.getQueryString() != null ? request.getRequestURI() + "?" + request.getQueryString() : request.getRequestURI(); response.sendError(HttpServletResponse.SC_FORBIDDEN); // 发送禁止访问错误
response.sendRedirect(request.getContextPath() + loginUrl + "?" + REDIRECT_URL_PARAMETER_NAME + "=" + URLEncoder.encode(redirectUrl, "UTF-8")); return false; // 返回 false停止执行
} else { } else { // 否则
response.sendRedirect(request.getContextPath() + loginUrl);
if (request.getMethod().equalsIgnoreCase("GET")) { // 如果是 GET 请求
String redirectUrl = request.getQueryString()!= null? request.getRequestURI() + "?" + request.getQueryString() : request.getRequestURI(); // 获取重定向 URL
response.sendRedirect(request.getContextPath() + loginUrl + "?" + REDIRECT_URL_PARAMETER_NAME + "=" + URLEncoder.encode(redirectUrl, "UTF-8")); // 发送重定向响应
} else { // 如果是其他请求
response.sendRedirect(request.getContextPath() + loginUrl); // 发送重定向响应
} }
return false; return false; // 返回 false停止执行
} }
} }
} }
} }
Loading…
Cancel
Save