有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在AccessDeniedHandle中获取上一页url

我使用的是“SpringMVC”,当用户遇到错误“拒绝访问”时,我想将用户重定向到上一页,因此我从“AccessDeniedHandle”创建了一个实现

Example

我的问题是如何获得上一页链接?或者我应该使用控制器? 有什么建议吗


共 (1) 个答案

  1. # 1 楼答案

    我找到了使用controller的解决方案,但如果您认为您有更好的建议,请分享

    春季安全。xml

    <security:http...>
         ...
         <security:access-denied-handler error-page="/403" />
         ...
    </security:http...>
    

    myController。java

    @RequestMapping(value="/403", method=RequestMethod.GET)
             public void accessDenied(HttpSession session,HttpServletRequest request, HttpServletResponse response, Model model, Authentication auth) {
              String previousPage = (String) session.getAttribute("previousPage"); 
                if(previousPage.isEmpty())
                {
                    if(request.isUserInRole("ROLE_ADMIN"))
                    {
                      try {
                        response.sendRedirect("olx/index");
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }
                    else if(request.isUserInRole("ROLE_USER"))
                    {
                      try {
                        response.sendRedirect("me/index");
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    }
                }
                else
                {
                    try {
                        response.sendRedirect(previousPage);
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
    
        }
    

    在每个jsp中

    <% Object thisPage = request.getAttribute("javax.servlet.forward.request_uri");
    session.setAttribute("previousPage",thisPage); %>