Filter 实现URL级别的权限访问控制,过滤敏感词汇,压缩响应信息等。(忽略Filter配置文件)
public class SysUpholdFilter implements Filter
{
RedisCache redisCache;
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
ApplicationContext app= WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext());
redisCache = (RedisCache) app.getBean("redisCache");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
Long isOnUphold = redisCache.getCacheObject(RedisKeyConstants.SYS_UPHOLD);
if(isOnUphold!=null&& isOnUphold.equals(1L)) {
if (request instanceof HttpServletRequest) {
HttpServletRequest req = (HttpServletRequest) request;
String uri = req.getRequestURI();
if (!uri.contains("sysuphold")) {
//相对路径
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/api/*/*/*/sysuphold");
requestDispatcher.forward(req, response);
return;
}
}
}
chain.doFilter(request, response);
}
@Override
public void destroy()
{
}
}