整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          前端架構師基于京東門戶編寫的7篇html、css實戰,代碼免費分享!

          情提示:以下代碼是我們邀請的前端架構師基于京東門戶編寫的html、css代碼,現在免費分享給大家,獲取的方式為:

          關注此頭條號“互聯網IT信息”——>私信發送 “京東html” ,即可得到源代碼的獲取方式。

          本專欄前篇文章中介紹了HttpBasic模式,該模式比較簡單,只是進行了通過攜帶Http的Header進行簡單的登錄驗證,而且沒有可以定制的登錄頁面,所以使用場景比較窄。

          對于一個完整的應用系統,與登錄驗證相關的頁面都是高度定制化的,非常美觀而且提供多種登錄方式。這就需要Spring Security支持我們自己定制登錄頁面,也就是本文給大家介紹的FormLogin模式登錄認證模式。

          1. 新建項目

          在介紹相關內容之前,需要先搭建一個demo,新建一個項目spring-security-02,需要添加依賴如下:

          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
          </dependency>
          復制代碼

          除此之外其實還需要添加web、thymeleaf的依賴,這里就不在貼出來了

          demo結構如下:

          2. 新建登錄頁面

          這里不再使用Security默認的頁面,自己定制一個,代碼如下:

          單純的一個表單登錄頁面,需要注意以下幾個參數:

          1. action:security登錄的url,可以自定義,下文介紹
          2. username:security登錄的用戶名,可以自定義,下文介紹
          3. password:security登錄的密碼,可以自定義,下文介紹

          以上三個參數都可以在security通過配置的方式定義

          3. 新建首頁

          這個是登錄成功后跳轉的首頁,代碼如下:

          4. 新建接口

          在security中一切的接口都稱之為資源,下面新建兩個測試接口,代碼如下:

          5. formLogin配置

          在介紹如何配置之前,先來看下formLogin模式登錄的5個要素:

          1. 登錄認證邏輯-登錄URL:這個URL在security中默認是/login且POST請求,但是也可以通過配置自定義
          2. 如何接收登錄參數:用戶名、密碼默認接收的字段分別是username、password,同樣也是可以通過配置自定義
          3. 登陸成功后邏輯:登錄成功后的處理邏輯,比如跳轉到指定的頁面、返回特定的JSON數據,這個也是可以定制
          4. 資源訪問控制規則:這個用于控制什么用戶、什么角色可以訪問什么資源,可以靜態指定也可以從數據庫中加載
          5. 用戶具有角色權限:配置某個用戶擁有什么角色、擁有什么權限,可以靜態指定也可以從數據庫中加載

          一般來說,使用權限認證框架的的業務系統登錄驗證邏輯是固定的,而資源訪問控制規則和用戶信息是從數據庫或其他存儲介質靈活加載的。但本文所有的用戶、資源、權限信息都是代碼配置寫死的,旨在為大家介紹formLogin認證模式,如何從數據庫加載權限認證相關信息我還會結合RBAC權限模型再寫文章的。

          針對上述5個的要素,formLogin配置代碼如下:

          首先,我們要繼承WebSecurityConfigurerAdapter ,重寫configure(HttpSecurity http) 方法,該方法用來配置登錄驗證邏輯。請注意看代碼中的注釋信息。

          上述代碼分為兩個部分:

          第一部分是formLogin配置段,用于配置登錄驗證邏輯相關的信息。如:登錄頁面、登錄成功頁面、登錄請求處理路徑等。

          • .loginPage("/login/page"):指定的第2步定制的登錄頁面,需要寫個mvc接口跳轉到login.html,見源碼
          • .loginProcessingUrl("/login"):指定處理登錄的邏輯的url,這個接口不需要開發者定義,security中通過過濾器UsernamePasswordAuthenticationFilter處理,后文介紹
          • .usernameParameter("username"):指定用戶名的接收參數的字段,默認是username,具體邏輯在UsernamePasswordAuthenticationFilter
          • .passwordParameter("password"):指定密碼的接收參數的字段,默認是username,具體邏輯在UsernamePasswordAuthenticationFilter
          • .defaultSuccessUrl("/"):登錄認證成功后默認轉跳的路徑,這里/則是跳轉到/index.html,可以自定義
          • .failureUrl("/login/page"):登陸失敗的跳轉的路徑

          第二部分是authorizeRequests配置段,用于配置資源的訪問控制規則

          • .antMatchers("/login/page","/login").permitAll():配置登錄頁面、登錄接口直接放行,不需要攔截登錄
          • .antMatchers("/","/hello1").hasAnyAuthority("ROLE_user","ROLE_admin"):設置/hello1、/這兩個資源需要user和admin的角色才可以訪問
          • .antMatchers("/hello2").hasAnyRole("admin"):配置/hello2這個資源需要admin的角色才可以訪問
          • .anyRequest().authenticated():除了上面的配置的規則,訪問其他的資源都需要登錄認證通過才可以訪問

          6. 用戶、角色配置

          在上述的規則中配置了一些資源需要特定的角色才可以訪問,比如user、admin,那么這些角色如何去指定呢?

          在security中提供了配置的方式,代碼如下:

          上述的代碼配置很簡單,創建了兩個用戶且指定了角色,分別如下:

          • user:密碼123456,賦予的角色為user
          • admin:密碼123456,賦予的角色為user、admin

          配置解釋如下:

          • .inMemoryAuthentication():指的是在內存里面存儲用戶的身份認證和授權信息;這里還可以配置從數據庫中動態加載,后文介紹
          • withUser("user"):用戶名是user
          • password(passwordEncoder().encode("123456")):密碼是加密之后的123456
          • roles():方法用于指定用戶的角色,一個用戶可以有多個角色
          • passwordEncoder(passwordEncoder()):指定密碼的加密方式,使用的是BCryptPasswordEncoder,后文介紹

          7. 簡單測試

          按照上述6個步驟基本實現了一個表單登錄,下面測試一下

          瀏覽器訪問http://localhost:8081/hello2,第一次訪問由于未登錄會自動跳轉到登錄頁面,如下圖:

          輸入用戶名和密碼,由于/hello2這個資源需要admin的角色才能訪問,因此必須用admin這個用戶登錄,否則將會報403的錯誤,登錄成功后將能夠正常訪問

          如果用戶名或者密碼錯誤將會觸發.failureUrl("/login/page")這個配置,自動跳轉到登錄頁面

          8. 自定義登錄結果

          在第5步的配置中,和登錄結果相關的配置有如下兩個:

          • .defaultSuccessUrl("/"):登錄認證成功后默認轉跳的路徑,這里/則是跳轉到/index.html,可以自定義
          • .failureUrl("/login/page"):登陸失敗的跳轉的路徑

          這兩個配置都是指定URL的方式:

          • 當我們登錄成功的時候,是由AuthenticationSuccessHandler進行登錄結果處理,默認跳轉到defaultSuccessUrl配置的路徑對應的資源頁面(一般是首頁index.html)。
          • 當我們登錄失敗的時候,是由AuthenticationfailureHandler進行登錄結果處理,默認跳轉到failureUrl配置的路徑對應的資源頁面(一般也是跳轉登錄頁login.html,重新登錄)。

          但是在web應用開發過程中需求是千變萬化的,有時需要我們針對登錄結果做個性化處理,比如:

          • 我們希望不同的人登陸之后,看到不同的首頁(及向不同的路徑跳轉)
          • 我們應用是前后端分離的,驗證響應結果是JSON格式數據,而不是頁面跳轉
          • …… 其他未盡的例子

          因此需要自定義的登錄結果,這篇文章先介紹如何定制跳轉頁面,關于JSON格式數據就是前后端分離架構下需要用到,后文介紹

          8.1 自定義登錄成功結果

          AuthenticationSuccessHandler接口是Security提供的認證成功處理器接口,我們只需要去實現它即可。但是通常來說,我們不會直接去實現AuthenticationSuccessHandler接口,而是繼承SavedRequestAwareAuthenticationSuccessHandler 類,這個類會記住用戶上一次請求的資源路徑,比如/hello2這個路徑,登錄成功后將會自動跳轉到/hello2這個頁面而不是首頁

          代碼如下:

          8.2 自定義登錄失敗結果

          這里我們同樣沒有直接實現AuthenticationFailureHandler接口,而是繼承SimpleUrlAuthenticationFailureHandler 類。該類中默認實現了登錄驗證失敗的跳轉邏輯,即登陸失敗之后回到登錄頁面。我們可以利用這一點簡化我們的代碼。

          代碼如下:

          8.3 SecurityConfig中配置

          配置如下:

          將自定義的AuthenticationSuccessHandler和AuthenticationFailureHandler注入到Spring Security配置類中

          使用formlogin模式,配置successHandler和failureHandler。

          不要配置defaultSuccessUrl和failureUrl,否則自定義handler將失效。handler配置與URL配置只能二選一

          總結

          本篇文章介紹了Spring Security 的 formLogin的配置方式,需要注意的是這里不支持前后端分離架構,關于前后端分離架構如何整合,后文會介紹

          來源:https://juejin.cn/post/7140096326829621261

          度收錄的文章多種多樣,排名將顯示在搜索結果中。然而,有一個方面是確定的,那就是,網站首頁的內容將首先顯示。因此,我們應該注意網站的登錄頁面設計。簡而言之,網站的登錄頁實際上是網站的主頁,其中一些是網站的專欄頁。無論是主頁還是其他頁面,都會有一個共同而突出的特點,即網站的登錄頁面內容非常豐富,其中大部分以標題的形式存在,并起到導航的作用。


          網站的登陸頁面不僅要求內容豐富,而且在視覺效果的設計上要求美感和良好印象,以吸引用戶深入訪問頁面,為網站贏得忠誠用戶。讓我們來分析一下企業網站建設登陸頁面設計的一些技巧。

          首先,網站登錄頁面的頭部設計。登錄頁的內容必須有LOGO。企業網站應向用戶展示企業標識,以便用戶一進入網站就知道它是什么樣的網站,并向用戶傳達網站的主要業務是什么。網站的口號必須靠近logo,這樣才能與其他企業區分開來,并看到與同行的差異。右邊可以是企業的聯系方式,通常是企業的400電話號碼,這也是企業實力的展示。

          其次,網站的登錄頁必須有橫幅圖片。如果是企業網站,橫幅圖片可以是企業的成功案例,也可以是企業的優勢產品。橫幅圖片的設計必須高檔、大氣、高端,圖片內容應與網站內容一致,體現企業網站的專業性,影響企業形象。

          第三,登錄頁面應重點介紹產品。企業肯定會有很多產品,而且這些產品的類型肯定是不同的。因此,登錄頁面的建設必須對這些產品進行詳細介紹,并做好分類介紹,以便用戶在點擊想要了解的產品后可以輕松進入詳細介紹頁面,這也是登錄頁面的導航功能。

          第四,登陸頁面應顯示企業榮譽證書。企業網站是企業展示實力的最佳平臺,而登錄頁面是最重要的環節。許多用戶通過登錄頁面了解網站。如果登錄頁面能夠證明企業的實力和優勢,用戶將留在網站上進行深入訪問。榮譽證書和一些相關部門的認證是最好的解釋。

          第五,登錄頁面應顯示企業的聯系信息。特別是一些交互式聯系信息,如在線客服系統,可以增強與用戶的互動,增強用戶的信任。在解決用戶問題的同時,引導用戶對網站進行深度訪問,提高網站的粘性。

          網站的登錄頁面對用戶很有吸引力,可以提高網站的轉化率。因此,登錄頁面的設計在網站建設中起著非常重要的作用。

          本文由妥妥網站建設原創,點贊關注,帶你一起長知識!


          了解更多


          主站蜘蛛池模板: 中文字幕一区二区在线播放| 久久综合精品国产一区二区三区| 一区二区三区无码被窝影院| 精品无码综合一区| 国产成人免费一区二区三区 | 日本一区二区三区精品国产| 国产伦精品一区二区三区不卡| 亚洲AV香蕉一区区二区三区| 亚洲一区二区观看播放| 国产成人精品一区二三区熟女 | 亚洲国产韩国一区二区| 在线观看亚洲一区二区| 精品欧洲av无码一区二区14| 中文字幕无线码一区2020青青| 日本一区二区三区免费高清 | 亚洲AV无码一区二区三区久久精品| 国产美女在线一区二区三区| 在线精品一区二区三区| 国产精品无码一区二区三区毛片 | 精品一区二区久久久久久久网站| 日本不卡免费新一区二区三区| 久久精品一区二区东京热| 亚洲国产一区在线观看| 久久久无码精品人妻一区| 蜜桃视频一区二区三区| 国产一区二区三区夜色| 奇米精品视频一区二区三区| 成人免费观看一区二区| 国产激情一区二区三区四区 | 精品国产不卡一区二区三区| 国产精品毛片一区二区三区| AV鲁丝一区鲁丝二区鲁丝三区| 亚无码乱人伦一区二区| 一区二区三区免费视频观看| 精品一区二区久久久久久久网站| 国产一区二区三区乱码网站| 视频精品一区二区三区| 亚洲成在人天堂一区二区| 国内精品一区二区三区最新| 久久国产香蕉一区精品| 国产成人亚洲综合一区|