2014-05-24 88 views
2

在登錄失敗我想重定向用戶到錯誤頁面,並顯示有意義的錯誤消息。是否可以添加將傳遞給後續請求的Flash屬性?閃光屬性定製AuthenticationFailureHandler

下面給出的代碼無法正常工作。 RequestContextUtils.getOutputFlashMap()返回null。

public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler{  
@Override 
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, 
     AuthenticationException exception) throws IOException, ServletException { 

    FlashMap outputFlashMap = RequestContextUtils.getOutputFlashMap(request); 
    if (outputFlashMap != null){    
     outputFlashMap.put("error", "Error message"); 
    } 
    response.sendRedirect(request.getContextPath()+"/error");  
} 

}

回答

1

我猜它是零,因爲你調用從過濾器鏈中的功能,而閃圖由Spring的DispatcherServlet該請求沒有在這一點上穿過維持。

爲什麼不直接使用參數?即

response.sendRedirect(request.getContextPath()+"/error?error=" + "Error Message"); 
+1

如果沒有其他選擇,它是可行的,但我不想在查詢字符串中公開我的參數。 – Ramps