Spring boot +Spring Security + Thymeleaf 認證失敗返回錯誤資訊

來源:互聯網
上載者:User

標籤:軟體   detail   alt   targe   方式   資料   last   設計   tail   

spring boot以其眾多友誼的特性,如零配置、微服務等,吸引了很多的粉絲。而其與Spring Security安全架構的無縫結合,使其具備的安全的特性。在此基礎上使用Thymeleaf模板引擎進行渲染,靜動態結合,讓頁面開發更加簡單、直觀。

通過表單提交登入的使用者名稱和密碼是登入介面比較常見的一種設計。在初學的過程中,我也不例外的採用個這種方式。表單設計見。

 

登入成功,完成正常的首頁面跳轉,這個不存在問題。存在問題的是,登入失敗了該咋辦呢?我就在考慮,由於thymeleaf的局部重新整理操作,登入失敗了將登入失敗的異常資訊顯示在登入頁面,也就是表單上。於是,我的登入設計又變成了如所示的表單。

        

         通過這種方法,當登入表單驗證失敗時,會該使用者顯示”使用者名稱或密碼錯誤,請重試”,這當然是比較好的,但是驗證失敗的情況不僅僅是使用者名稱或密碼錯誤吧,應該還有其它的情形,比較常見的就有,該使用者已被鎖定,該使用者不存在,請先註冊等。

那麼該如何區分這麼情形呢,怎麼把登入表單驗證失敗的比較詳細的狀況顯示給使用者呢。經過一段時間的調研,發現Spring boot提供了比較完美的解決方案,而其秘密就在Spring Security的配置中。我項目中的Spring Security配置如所示。

 

而我在閱讀Spring Security源碼時,當認證失敗時,找尋到以下處理的代碼

 

而重點就在saveException函數,而此函數的具體代碼如下:

 

從這段代碼中,我們可以清晰的看到,認證失敗的異常資訊被儲存在Session中,如果我們可以讀取Session中的資訊那麼,之前所遇到的問題就迎刃而解了吧。

事實上,事物的發展從來不是一帆風順的,解決問題也是類似。我瞭解到Thymeleaf提供了讀取緩衝Session的方案,就迫不及待的進行嘗試,於是乎,我的登入表單又變成了如下模樣,紅線指出的是Thymleaf緩衝的讀取方式。

 

這樣就可以顯示驗證失敗的具體資訊了嗎?經過我的測試,我發現,此資訊是未定義。也就是說,模樣讀取到緩衝中的資訊。

通過在網上尋找資料,我在浩瀚的百度的犄角旮旯裡,尋找到以下的程式碼片段。

 

         我如獲至寶,彷彿見到了光明。在設定檔配置的時代,可以設定登入失敗的跳轉頁面為”/login.html?error=true”,而我設定的是“/login?error”,那麼是否可以設定為類似的true呢?我迫不及待的進行嘗試。於是乎,我Spring Security的Java Config又變成了如下的樣子。

 

經過驗證,通過這樣設定,完美的解決了我遇到的問題,到現在,我仍沒有明白設定true的含義,望知道的讀者可以告訴小編。

小編來總結哈,在Spring boot +Spring Security + Thymeleaf架構下,通過使用者名稱/密碼錶單提交,在登入介面擷取異常資訊的步驟,主要有以下兩點:

其一:將登入失敗的url設定為”/login?error=true”(即尾碼帶?error=true),使前端的thymleaf可以讀取Session;

其二:Thymeleaf提供的讀取緩衝中資訊的方法${session.SPRING_SECURITY_LAST_EXCEPTION.message},兩者缺一不可。

 

http://blog.csdn.net/sun1021873926/article/details/60332059

 

Spring boot +Spring Security + Thymeleaf 認證失敗返回錯誤資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.