我認爲你應該這樣做,實施自定義org.springframework.security.web.access.AccessDeniedHandler
。每當用戶嘗試訪問無權訪問的頁面時,該頁面將被拋出。在handle
方法中,您收到的參數爲HttpServletRequest
,您可以使用該方法對每個請求端點進行一種特定的處理。
@Override
public void handle(HttpServletRequest request, HttpServletResponse response,
AccessDeniedException accessDeniedException)
throws IOException, ServletException {
String errorPage = doSomethingWithRequestUri(request);
response.sendRedirect(errorPage);
}
但是你必須非常小心,這樣如果您嘗試重定向到相同的URL,用戶試圖進入你會愛上一個無限循環重定向。也許你應該使用授權/非授權模式,比如這個:
你可能已經想到了這一點,你已經實現瞭解決方案...因此,在AccessDeniedHandler
實現中,您應該注意授權/未授權的url關係
感謝Amirutha,我認爲類似的解決方案可以使用spring security提供的選項卡庫來實現,但它也是開發人員可以使用的東西爲了使其發揮作用,我從框架的角度來看待更多,如果有一個「正確」的方法來實現這一點,那就是Spring Security推薦的方法。 –