關注此頭條號“互聯網IT信息”——>私信發送 “京東html” ,即可得到源代碼的獲取方式。
本專欄前篇文章中介紹了HttpBasic模式,該模式比較簡單,只是進行了通過攜帶Http的Header進行簡單的登錄驗證,而且沒有可以定制的登錄頁面,所以使用場景比較窄。
對于一個完整的應用系統,與登錄驗證相關的頁面都是高度定制化的,非常美觀而且提供多種登錄方式。這就需要Spring Security支持我們自己定制登錄頁面,也就是本文給大家介紹的FormLogin模式登錄認證模式。
在介紹相關內容之前,需要先搭建一個demo,新建一個項目spring-security-02,需要添加依賴如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
復制代碼
除此之外其實還需要添加web、thymeleaf的依賴,這里就不在貼出來了
demo結構如下:
這里不再使用Security默認的頁面,自己定制一個,代碼如下:
單純的一個表單登錄頁面,需要注意以下幾個參數:
以上三個參數都可以在security通過配置的方式定義
這個是登錄成功后跳轉的首頁,代碼如下:
在security中一切的接口都稱之為資源,下面新建兩個測試接口,代碼如下:
在介紹如何配置之前,先來看下formLogin模式登錄的5個要素:
一般來說,使用權限認證框架的的業務系統登錄驗證邏輯是固定的,而資源訪問控制規則和用戶信息是從數據庫或其他存儲介質靈活加載的。但本文所有的用戶、資源、權限信息都是代碼配置寫死的,旨在為大家介紹formLogin認證模式,如何從數據庫加載權限認證相關信息我還會結合RBAC權限模型再寫文章的。
針對上述5個的要素,formLogin配置代碼如下:
首先,我們要繼承WebSecurityConfigurerAdapter ,重寫configure(HttpSecurity http) 方法,該方法用來配置登錄驗證邏輯。請注意看代碼中的注釋信息。
上述代碼分為兩個部分:
第一部分是formLogin配置段,用于配置登錄驗證邏輯相關的信息。如:登錄頁面、登錄成功頁面、登錄請求處理路徑等。
第二部分是authorizeRequests配置段,用于配置資源的訪問控制規則
在上述的規則中配置了一些資源需要特定的角色才可以訪問,比如user、admin,那么這些角色如何去指定呢?
在security中提供了配置的方式,代碼如下:
上述的代碼配置很簡單,創建了兩個用戶且指定了角色,分別如下:
配置解釋如下:
按照上述6個步驟基本實現了一個表單登錄,下面測試一下
瀏覽器訪問http://localhost:8081/hello2,第一次訪問由于未登錄會自動跳轉到登錄頁面,如下圖:
輸入用戶名和密碼,由于/hello2這個資源需要admin的角色才能訪問,因此必須用admin這個用戶登錄,否則將會報403的錯誤,登錄成功后將能夠正常訪問
如果用戶名或者密碼錯誤將會觸發.failureUrl("/login/page")這個配置,自動跳轉到登錄頁面
在第5步的配置中,和登錄結果相關的配置有如下兩個:
這兩個配置都是指定URL的方式:
但是在web應用開發過程中需求是千變萬化的,有時需要我們針對登錄結果做個性化處理,比如:
因此需要自定義的登錄結果,這篇文章先介紹如何定制跳轉頁面,關于JSON格式數據就是前后端分離架構下需要用到,后文介紹
AuthenticationSuccessHandler接口是Security提供的認證成功處理器接口,我們只需要去實現它即可。但是通常來說,我們不會直接去實現AuthenticationSuccessHandler接口,而是繼承SavedRequestAwareAuthenticationSuccessHandler 類,這個類會記住用戶上一次請求的資源路徑,比如/hello2這個路徑,登錄成功后將會自動跳轉到/hello2這個頁面而不是首頁
代碼如下:
這里我們同樣沒有直接實現AuthenticationFailureHandler接口,而是繼承SimpleUrlAuthenticationFailureHandler 類。該類中默認實現了登錄驗證失敗的跳轉邏輯,即登陸失敗之后回到登錄頁面。我們可以利用這一點簡化我們的代碼。
代碼如下:
配置如下:
將自定義的AuthenticationSuccessHandler和AuthenticationFailureHandler注入到Spring Security配置類中
使用formlogin模式,配置successHandler和failureHandler。
不要配置defaultSuccessUrl和failureUrl,否則自定義handler將失效。handler配置與URL配置只能二選一
本篇文章介紹了Spring Security 的 formLogin的配置方式,需要注意的是這里不支持前后端分離架構,關于前后端分離架構如何整合,后文會介紹
來源:https://juejin.cn/post/7140096326829621261
度收錄的文章多種多樣,排名將顯示在搜索結果中。然而,有一個方面是確定的,那就是,網站首頁的內容將首先顯示。因此,我們應該注意網站的登錄頁面設計。簡而言之,網站的登錄頁實際上是網站的主頁,其中一些是網站的專欄頁。無論是主頁還是其他頁面,都會有一個共同而突出的特點,即網站的登錄頁面內容非常豐富,其中大部分以標題的形式存在,并起到導航的作用。
網站的登陸頁面不僅要求內容豐富,而且在視覺效果的設計上要求美感和良好印象,以吸引用戶深入訪問頁面,為網站贏得忠誠用戶。讓我們來分析一下企業網站建設登陸頁面設計的一些技巧。
首先,網站登錄頁面的頭部設計。登錄頁的內容必須有LOGO。企業網站應向用戶展示企業標識,以便用戶一進入網站就知道它是什么樣的網站,并向用戶傳達網站的主要業務是什么。網站的口號必須靠近logo,這樣才能與其他企業區分開來,并看到與同行的差異。右邊可以是企業的聯系方式,通常是企業的400電話號碼,這也是企業實力的展示。
其次,網站的登錄頁必須有橫幅圖片。如果是企業網站,橫幅圖片可以是企業的成功案例,也可以是企業的優勢產品。橫幅圖片的設計必須高檔、大氣、高端,圖片內容應與網站內容一致,體現企業網站的專業性,影響企業形象。
第三,登錄頁面應重點介紹產品。企業肯定會有很多產品,而且這些產品的類型肯定是不同的。因此,登錄頁面的建設必須對這些產品進行詳細介紹,并做好分類介紹,以便用戶在點擊想要了解的產品后可以輕松進入詳細介紹頁面,這也是登錄頁面的導航功能。
第四,登陸頁面應顯示企業榮譽證書。企業網站是企業展示實力的最佳平臺,而登錄頁面是最重要的環節。許多用戶通過登錄頁面了解網站。如果登錄頁面能夠證明企業的實力和優勢,用戶將留在網站上進行深入訪問。榮譽證書和一些相關部門的認證是最好的解釋。
第五,登錄頁面應顯示企業的聯系信息。特別是一些交互式聯系信息,如在線客服系統,可以增強與用戶的互動,增強用戶的信任。在解決用戶問題的同時,引導用戶對網站進行深度訪問,提高網站的粘性。
網站的登錄頁面對用戶很有吸引力,可以提高網站的轉化率。因此,登錄頁面的設計在網站建設中起著非常重要的作用。
本文由妥妥網站建設原創,點贊關注,帶你一起長知識!
了解更多
*請認真填寫需求信息,我們會在24小時內與您取得聯系。