@ -54,20 +54,23 @@ public class AccessDeniedHandlerImpl implements AccessDeniedHandler {
@@ -54,20 +54,23 @@ public class AccessDeniedHandlerImpl implements AccessDeniedHandler {
//~ Methods ========================================================================================================
public void handle ( ServletRequest request , ServletResponse response , AccessDeniedException accessDeniedException )
throws IOException , ServletException {
if ( errorPage ! = null ) {
// Put exception into request scope (perhaps of use to a view)
( ( HttpServletRequest ) request ) . setAttribute ( SPRING_SECURITY_ACCESS_DENIED_EXCEPTION_KEY ,
accessDeniedException ) ;
// Perform RequestDispatcher "forward"
RequestDispatcher rd = request . getRequestDispatcher ( errorPage ) ;
rd . forward ( request , response ) ;
}
throws IOException , ServletException {
if ( ! response . isCommitted ( ) ) {
// Send 403 (we do this after response has been written)
( ( HttpServletResponse ) response ) . sendError ( HttpServletResponse . SC_FORBIDDEN , accessDeniedException . getMessage ( ) ) ;
if ( errorPage ! = null ) {
// Put exception into request scope (perhaps of use to a view)
request . setAttribute ( SPRING_SECURITY_ACCESS_DENIED_EXCEPTION_KEY , accessDeniedException ) ;
// Set the 403 status code.
HttpServletResponse resp = ( HttpServletResponse ) response ;
resp . setStatus ( HttpServletResponse . SC_FORBIDDEN ) ;
// forward to error page.
RequestDispatcher dispatcher = request . getRequestDispatcher ( errorPage ) ;
dispatcher . forward ( request , response ) ;
} else {
HttpServletResponse resp = ( HttpServletResponse ) response ;
resp . sendError ( HttpServletResponse . SC_FORBIDDEN , accessDeniedException . getMessage ( ) ) ;
}
}
}