1. Introduktion
I den här artikeln kommer vi att visa hur du anpassar sidan nekad åtkomst i ett Spring Security-projekt .
Detta kan uppnås antingen genom Spring Security-konfigurationen eller webbapplikationskonfigurationen i web.xml- filen.
I de återstående avsnitten kommer vi att ta en djupare titt på vart och ett av dessa alternativ.
2. Anpassad JSP
När en användare försöker komma åt en sida som är begränsad till roller de inte har, kommer applikationen att returnera en statuskod på 403, vilket betyder åtkomst nekad .
För att ersätta vårens 403-svarsida med en anpassad, låt oss först skapa en JSP- fil som heter accessDenied.jsp :
Sorry, you do not have permission to view this page.
Click here to go back to the Homepage.
3. Vårens säkerhetskonfiguration
3.1. Åtkomst nekad sida
@Override protected void configure(final HttpSecurity http) throws Exception { http // ... .and() .exceptionHandling().accessDeniedPage("/accessDenied.jsp"); }
Låt oss ta en titt på motsvarande XML-konfiguration för åtkomst nekad sida:
3.2. Åtkomst nekad hanterare
public class CustomAccessDeniedHandler implements AccessDeniedHandler { public static final Logger LOG = Logger.getLogger(CustomAccessDeniedHandler.class); @Override public void handle( HttpServletRequest request, HttpServletResponse response, AccessDeniedException exc) throws IOException, ServletException { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth != null) { LOG.warn("User: " + auth.getName() + " attempted to access the protected URL: " + request.getRequestURI()); } response.sendRedirect(request.getContextPath() + "/accessDenied"); } }
I säkerhetskonfigurationen definierar vi bönan och ställer in den anpassade AccessDeniedHandler :
@Bean public AccessDeniedHandler accessDeniedHandler(){ return new CustomAccessDeniedHandler(); } //... .exceptionHandling().accessDeniedHandler(accessDeniedHandler());
4. Programkonfiguration
403 /accessDenied
5. Sammanfattning
Den fullständiga källkoden för artikeln finns i GitHub-projektet.