CSS和JS在应用Servlet过滤器后不起作用。

huangapple go评论119阅读模式
英文:

CSS and JS not working after applaying servelt filter

问题

这是您提供的代码的翻译部分:

  1. 这是我第一次使用dofilter函数来对我的jsp web应用程序进行身份验证一旦添加它CSSJS在任何页面上都无法工作我一遍又一遍地搜索但无法将解决方案应用到我的代码中
  2. 以下是dofilter方法
  3. @Override
  4. public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
  5. throws IOException, ServletException {
  6. HttpServletRequest request = (HttpServletRequest) req;
  7. HttpServletResponse response = (HttpServletResponse) resp;
  8. String servletPath = request.getServletPath();
  9. // 存储在会话中的用户信息。
  10. // (成功登录后)。
  11. UserAccount loginedUser = AppUtils.getLoginedUser(request.getSession());
  12. if (servletPath.equals("/login")) {
  13. chain.doFilter(request, response);
  14. return;
  15. }
  16. HttpServletRequest wrapRequest = request;
  17. if (loginedUser != null) {
  18. // 用户名
  19. String userName = loginedUser.getUserName();
  20. // 角色
  21. List<String> roles = loginedUser.getRoles();
  22. // 用userName和Roles信息包装旧请求。
  23. wrapRequest = new UserRoleRequestWrapper(userName, roles, request);
  24. }
  25. // 必须登录的页面。
  26. if (SecurityUtils.isSecurityPage(request)) {
  27. // 如果用户未登录,
  28. // 重定向到登录页面。
  29. if (loginedUser == null) {
  30. String requestUri = request.getRequestURI();
  31. // 存储当前页面以在成功登录后重定向。
  32. int redirectId = AppUtils.storeRedirectAfterLoginUrl(request.getSession(), requestUri);
  33. response.sendRedirect(wrapRequest.getContextPath() + "/login?redirectId=" + redirectId);
  34. return;
  35. }
  36. // 检查用户是否具有有效的角色?
  37. boolean hasPermission = SecurityUtils.hasPermission(wrapRequest);
  38. if (!hasPermission) {
  39. RequestDispatcher dispatcher //
  40. = request.getServletContext().getRequestDispatcher("/accessDeniedView.jsp");
  41. dispatcher.forward(request, response);
  42. return;
  43. }
  44. }
  45. chain.doFilter(wrapRequest, response);
  46. }

以下是页面中的CSS链接:

  1. <link href="vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
  2. <link
  3. href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
  4. rel="stylesheet">
英文:

it is the first time i use dofilter function for authenticating my jsp web application once added it and CSS and JS not working on any page, I made search over and over but can not apply the solutions in my code
find below dofilter method.

  1. @Override
  2. public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
  3. throws IOException, ServletException {
  4. HttpServletRequest request = (HttpServletRequest) req;
  5. HttpServletResponse response = (HttpServletResponse) resp;
  6. String servletPath = request.getServletPath();
  7. // User information stored in the Session.
  8. // (After successful login).
  9. UserAccount loginedUser = AppUtils.getLoginedUser(request.getSession());
  10. if (servletPath.equals(&quot;/login&quot;)) {
  11. chain.doFilter(request, response);
  12. return;
  13. }
  14. HttpServletRequest wrapRequest = request;
  15. if (loginedUser != null) {
  16. // User Name
  17. String userName = loginedUser.getUserName();
  18. // Roles
  19. List&lt;String&gt; roles = loginedUser.getRoles();
  20. // Wrap old request by a new Request with userName and Roles information.
  21. wrapRequest = new UserRoleRequestWrapper(userName, roles, request);
  22. }
  23. // Pages must be signed in.
  24. if (SecurityUtils.isSecurityPage(request)) {
  25. // If the user is not logged in,
  26. // Redirect to the login page.
  27. if (loginedUser == null) {
  28. String requestUri = request.getRequestURI();
  29. // Store the current page to redirect to after successful login.
  30. int redirectId = AppUtils.storeRedirectAfterLoginUrl(request.getSession(), requestUri);
  31. response.sendRedirect(wrapRequest.getContextPath() + &quot;/login?redirectId=&quot; + redirectId);
  32. return;
  33. }
  34. // Check if the user has a valid role?
  35. boolean hasPermission = SecurityUtils.hasPermission(wrapRequest);
  36. if (!hasPermission) {
  37. RequestDispatcher dispatcher //
  38. = request.getServletContext().getRequestDispatcher(&quot;/accessDeniedView.jsp&quot;);
  39. dispatcher.forward(request, response);
  40. return;
  41. }
  42. }
  43. chain.doFilter(wrapRequest, response);
  44. }

also find CSS link in pages

  1. &lt;link href=&quot;vendor/fontawesome-free/css/all.min.css&quot; rel=&quot;stylesheet&quot;
  2. type=&quot;text/css&quot;&gt;
  3. &lt;link
  4. href=&quot;https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i&quot;
  5. rel=&quot;stylesheet&quot;&gt;

答案1

得分: 0

我终于在深入项目时找到了问题所在,与从Login servelt中移除"/"有关,并且应该是@WebServlet({ "/login" })。

英文:

i finally found the issue while deluging the project and it was related to remove "/" from Login servelt and to be @WebServlet({ "/login" })

huangapple
  • 本文由 发表于 2020年9月10日 00:13:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/63815569.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定