package com.wgcloud.filter;
|
|
|
import com.wgcloud.config.CommonConfig;
|
import com.wgcloud.entity.AccountInfo;
|
import com.wgcloud.util.staticvar.StaticKeys;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import javax.servlet.*;
|
import javax.servlet.annotation.WebFilter;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.io.IOException;
|
|
/**
|
* @version v2.3
|
* @ClassName:AuthRestFilter.java
|
* @author: http://www.wgstart.com
|
* @date: 2019年11月16日
|
* @Description: http请求过滤器,拦截不是从路由过来的请求
|
* @Copyright: 2017-2024 wgcloud. All rights reserved.
|
*/
|
@WebFilter(filterName = "authRestFilter", urlPatterns = {"/*"})
|
public class AuthRestFilter implements Filter {
|
|
static Logger log = LoggerFactory.getLogger(AuthRestFilter.class);
|
|
@Autowired
|
CommonConfig commonConfig;
|
|
String[] static_resource = {"/agent/minTask", "/login/toLogin", "/login/login", "/appInfo/agentList", "/static/"};
|
|
String[] dash_views = {"/dash/main", "/dash/systemInfoList", "/dash/detail", "/dash/chart"};
|
|
@Override
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
final HttpServletResponse response = (HttpServletResponse) servletResponse;
|
final HttpServletRequest request = (HttpServletRequest) servletRequest;
|
final HttpSession session = request.getSession();
|
AccountInfo accountInfo = (AccountInfo) session.getAttribute(StaticKeys.LOGIN_KEY);
|
String uri = request.getRequestURI();
|
log.debug("uri----" + uri);
|
String servletPath = request.getServletPath();
|
log.debug("servletPath----" + servletPath);
|
menuActive(session, uri);
|
for (String ss : static_resource) {
|
if (servletPath.startsWith(ss)) {
|
filterChain.doFilter(servletRequest, servletResponse);
|
return;
|
}
|
}
|
if (accountInfo == null) {
|
for (String ss : dash_views) {
|
if (servletPath.startsWith(ss) && "true".equals(commonConfig.getDashView()) && request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) {
|
filterChain.doFilter(servletRequest, servletResponse);
|
return;
|
}
|
}
|
}
|
if (accountInfo == null) {
|
response.sendRedirect("/wgcloud/login/toLogin");
|
return;
|
}
|
filterChain.doFilter(servletRequest, servletResponse);
|
}
|
|
|
/**
|
* 添加菜单标识
|
*
|
* @param session
|
* @param uri
|
*/
|
public void menuActive(HttpSession session, String uri) {
|
if (uri.indexOf("/log/") > -1) {
|
session.setAttribute("menuActive", "21");
|
return;
|
}
|
if (uri.indexOf("/dash/main") > -1) {
|
session.setAttribute("menuActive", "11");
|
return;
|
}
|
if (uri.indexOf("/dash/systemInfoList") > -1 || uri.indexOf("/dash/detail") > -1 || uri.indexOf("/dash/chart") > -1) {
|
session.setAttribute("menuActive", "12");
|
return;
|
}
|
if (uri.indexOf("/appInfo") > -1) {
|
session.setAttribute("menuActive", "13");
|
return;
|
}
|
if (uri.indexOf("/mailset") > -1) {
|
session.setAttribute("menuActive", "31");
|
return;
|
}
|
if (uri.indexOf("/dbInfo") > -1) {
|
session.setAttribute("menuActive", "41");
|
return;
|
}
|
if (uri.indexOf("/dbTable") > -1) {
|
session.setAttribute("menuActive", "42");
|
return;
|
}
|
if (uri.indexOf("/heathMonitor") > -1) {
|
session.setAttribute("menuActive", "51");
|
return;
|
}
|
session.setAttribute("menuActive", "11");
|
return;
|
|
}
|
|
}
|