身份验证过滤器未加载 3 个网页的 css
Posted
技术标签:
【中文标题】身份验证过滤器未加载 3 个网页的 css【英文标题】:Authentication Filter not loading css for 3 web pages 【发布时间】:2016-09-26 02:52:24 【问题描述】:我的网络应用程序有一个身份验证过滤器,它在登录后成功加载了所有网页的 CSS,除了主页(索引)、关于我们页面(关于)和注册页面(登记)。出于某种原因,我无法弄清楚为什么我的过滤器没有决定为这三个页面加载 css,但对于它工作的其他页面,我已经检查了所有页面的 jsp 文件并且无法发现错误。
有人告诉我,我必须在 doFilter 方法中使用 excludeURLs 修复某些问题,但我仍然感到困惑。
这是我的doFilter:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpSession session = httpReq.getSession(false); // if the fail login it doesnt create a session
if (session != null && session.getAttribute("user") == null && !excludeURLs.contains(httpReq.getServletPath()) )
RequestDispatcher rd = httpReq.getRequestDispatcher("login.jsp");
rd.forward(request, response);
return;
chain.doFilter(request, response);
这是我排除特定 URL 的 init 方法:
public void init(FilterConfig fConfig) throws ServletException
System.out.println("AuthenticationFilter Initiated...");
//Pages/Servlet
excludeURLs.add("/login");
excludeURLs.add("/login.jsp");
excludeURLs.add("/index");
excludeURLs.add("/index.jsp");
excludeURLs.add("/about");
excludeURLs.add("/about.jsp");
excludeURLs.add("/register");
excludeURLs.add("/signup.jsp");
//Images
excludeURLs.add("/Images");
excludeURLs.add("/css");
excludeURLs.add("/js");
【问题讨论】:
【参考方案1】:假设:
-
您的 css 文件的扩展名为“.css”,
对 css 文件的未经身份验证的访问对您/您的组织来说不是问题,快速解决方法是:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
HttpServletRequest httpReq = (HttpServletRequest) request;
HttpSession session = httpReq.getSession(false); // if the fail login it doesnt create a session
String path= httpReq.getRequestURI();
if(path.endsWith(".css"))
chain.doFilter(request,response);
return;
if (session != null && session.getAttribute("user") == null && !excludeURLs.contains(httpReq.getServletPath()) )
RequestDispatcher rd = httpReq.getRequestDispatcher("login.jsp");
rd.forward(request, response);
return;
chain.doFilter(request, response);
【讨论】:
这救了我!非常感谢以上是关于身份验证过滤器未加载 3 个网页的 css的主要内容,如果未能解决你的问题,请参考以下文章
Spring oauth2令牌请求中未实际使用的基本身份验证过滤器和身份验证入口点