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

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

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