parent
3065d2ee6d
commit
e7e5c37ea3
@ -1,18 +1,29 @@
|
||||
package com.tamguo.config.web;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import com.tamguo.interceptor.MemberInterceptor;
|
||||
|
||||
@Configuration
|
||||
public class WebConfig implements WebMvcConfigurer {
|
||||
|
||||
@Value("${file.storage.path}")
|
||||
private String fileStoragePath;
|
||||
@Autowired
|
||||
private MemberInterceptor memberInterceptor;
|
||||
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("/files/**").addResourceLocations("file:"+fileStoragePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(memberInterceptor).addPathPatterns("/member/**");
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,60 @@
|
||||
package com.tamguo.interceptor;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
||||
|
||||
@Component
|
||||
public class MemberInterceptor extends HandlerInterceptorAdapter{
|
||||
|
||||
/** "重定向URL"参数名称 */
|
||||
private static final String REDIRECT_URL_PARAMETER_NAME = "redirectUrl";
|
||||
|
||||
/** 默认登录URL */
|
||||
private static final String DEFAULT_LOGIN_URL = "/login.html";
|
||||
|
||||
/** 登录URL */
|
||||
private String loginUrl = DEFAULT_LOGIN_URL;
|
||||
|
||||
@Value("${tiku.admin.name}")
|
||||
private String tDomainName;
|
||||
|
||||
/**
|
||||
* 请求前处理
|
||||
*
|
||||
* @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(tDomainName + request.getContextPath() + loginUrl + "?" + REDIRECT_URL_PARAMETER_NAME + "=" + URLEncoder.encode(redirectUrl, "UTF-8"));
|
||||
} else {
|
||||
response.sendRedirect(tDomainName + request.getContextPath() + loginUrl);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue