Spring Security:异常处理

第一种

可以自定义403错误页面

<security:http>
   <!--处理403异常-->
   <security:access-denied-handler error-page="403.jsp"/>
</security:http>

默认的403处理页面是这样的:

image-20201004205227490

这种方式有局限性,只能处理403异常。

第二种(非spring boot项目)

在web.xml配置,可以针对不同的状态码提供不同的页面。

    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>

    <error-page>
        <error-code>403</error-code>
        <location>/403.jsp</location>
    </error-page>

第三种:配置

@Component
public class ExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView mv = new ModelAndView();
        mv.addObject("errMsg",ex.getMessage());
        if(ex instanceof AccessDeniedException){
            mv.setViewName("forward:/403.jsp");
        }else{
            mv.setViewName("forward:/500.jsp");
        }
        return mv;
    }
}

此外,还有一种配置方案,详情见:https://www.cnblogs.com/wwjj4811/p/13199964.html(推荐使用这种方式)

原文地址:https://www.cnblogs.com/wwjj4811/p/13768422.html