Compare commits

..

No commits in common. '6ba6c7eccd72cdd00bfd9b0f1fc654f1be4430c9' and '8bf11d7002f106d90fb588f0a0e0ea52c351793a' have entirely different histories.

@ -1,59 +1,55 @@
package com.tamguo.web.interceptor; package com.tamguo.web.interceptor;
import java.net.URLEncoder; // 导入用于编码的类 import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest; // 导入 Http 请求类 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; // 导入 Http 响应类 import javax.servlet.http.HttpServletResponse;
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"; // 定义重定向 URL 参数名称 private static final String REDIRECT_URL_PARAMETER_NAME = "redirectUrl";
/** 默认登录 URL */ /** 默认登录URL */
private static final String DEFAULT_LOGIN_URL = "/login.html"; // 定义默认登录 URL private static final String DEFAULT_LOGIN_URL = "/login.html";
/** 登录 URL */
private String loginUrl = DEFAULT_LOGIN_URL; // 定义登录 URL
/** 登录URL */
private String loginUrl = DEFAULT_LOGIN_URL;
/** /**
* *
* *
* @param request HttpServletRequest * @param request
* @param response HttpServletResponse * HttpServletRequest
* @param handler * @param response
* 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");
Object currMember = request.getSession().getAttribute("currMember"); // 获取当前会话中的会员对象 if (currMember != null) {
return true;
if (currMember!= null) { // 如果会员对象不为空 } else {
return true; // 返回 true继续执行 String requestType = request.getHeader("X-Requested-With");
} else { // 否则 if (requestType != null && requestType.equalsIgnoreCase("XMLHttpRequest")) {
response.addHeader("loginStatus", "accessDenied");
String requestType = request.getHeader("X-Requested-With"); // 获取请求头中的"X-Requested-With" response.sendError(HttpServletResponse.SC_FORBIDDEN);
return false;
if (requestType!= null && requestType.equalsIgnoreCase("XMLHttpRequest")) { // 如果是 XMLHttpRequest 请求 } else {
response.addHeader("loginStatus", "accessDenied"); // 在响应头中添加登录状态 if (request.getMethod().equalsIgnoreCase("GET")) {
response.sendError(HttpServletResponse.SC_FORBIDDEN); // 发送禁止访问错误 String redirectUrl = request.getQueryString() != null ? request.getRequestURI() + "?" + request.getQueryString() : request.getRequestURI();
return false; // 返回 false停止执行 response.sendRedirect(request.getContextPath() + loginUrl + "?" + REDIRECT_URL_PARAMETER_NAME + "=" + URLEncoder.encode(redirectUrl, "UTF-8"));
} 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; // 返回 false停止执行 return false;
} }
} }
} }
}
}

Loading…
Cancel
Save