簡體   English   中英

Spring Boot 2 Interceptor在每個請求上都解析“ / login”

[英]Spring Boot 2 Interceptor resolves `/login' on every request

在Spring Boot安全性內部,如果我檢測到用戶已登錄,則嘗試將服務器端在Spring Boot中的登錄頁面自動重定向到概述頁面。僅在用戶注銷時才顯示登錄屏幕。

@Configuration
public class MvcConfig implements WebMvcConfigurer
{

   @Override
   public void addInterceptors( InterceptorRegistry registry )
   {
      registry.addInterceptor( new LoginInterceptor() ).addPathPatterns( "/login" );
   }

在LoginInterceptor內部,我有:

   @Override
   public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception
   {

      Authentication auth = SecurityContextHolder.getContext().getAuthentication();
      String url = request.getRequestURL().toString();
      System.out.println(url);
      if( auth.isAuthenticated() )
      {
         response.sendRedirect( "/my/overview" );
         return false;
      }

      return true;
   }

但是,即使我已登錄,調試器似乎也認為我仍在/ login路由上。 spring boot是否通過/login路由每個請求以檢查身份驗證? 我如何實現除非用戶注銷否則不解決登錄頁面的目標?

實際上,這里發生的是為isAuthenticated返回了“ anonymousUser”,因此authenticated方法無法正常工作。 對於未經授權的帳戶的重定向使我覺得一切都在通過登錄路徑進行,而實際上這只是安全性在起作用。 檢查原理是否為null是替代方法。

 if( auth.isAuthenticated() && principal != null )
 {
      response.sendRedirect( OVERVIEW_PAGE );
      return false;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM