簡體   English   中英

Grails Spring Security 登錄失敗未重定向到登錄視圖

[英]Grails Spring Security failed login not redirecting to login view

具有自定義登錄,其中需要用戶名+密碼+組織才能登錄。 從身份驗證的角度來看,登錄成功和登錄失敗情況都有效,但登錄失敗並沒有按預期重定向到登錄頁面。 相反,它顯示了一個 401 錯誤頁面,並帶有如下消息:

HTTP 狀態 401 - 身份驗證失敗:沒有匹配的帳戶

我應該怎么做才能更正重定向以顯示登錄頁面而不是 HTTP 狀態頁面?

我在登錄失敗時看到的 URL 是:

localhost/myapp/j_ehrserver_security_check

這是我的登錄實現代碼:

解決了添加與@Vinay 建議的 401 HTTP 狀態相對應的 URL 映射,但我使用了控制器而不是視圖:

"401"(controller:'login')

編輯

我找到了一個靈活的解決方案

將 authenticationFailureHandler bean 配置到我自定義的 authFilter 中。 隨着 /login/authfail 被調用,AuthenticationException 被處理並轉換為 flash.message,所以我可以向用戶顯示反饋。

由於 Spring 的所有依賴注入,這很難理解,但它有效!

現在我的 spring/resources.groovy 看起來像:

import com.cabolabs.security.AuthFilter
import com.cabolabs.security.AuthProvider
beans = {

   authProvider(AuthProvider) {
      passwordEncoder = ref("passwordEncoder") // from plugin
   }

   authFilter(AuthFilter) {
      authProvider = ref("authProvider")
      authenticationManager = ref("authenticationManager")
      sessionAuthenticationStrategy = ref('sessionAuthenticationStrategy')
      authenticationSuccessHandler = ref('authenticationSuccessHandler')
      authenticationFailureHandler = ref('authenticationFailureHandler')
      rememberMeServices = ref("rememberMeServices")
      requiresAuthenticationRequestMatcher = ref('filterProcessUrlRequestMatcher')
   }
}

暫無
暫無

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

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