Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 九月婷婷丁香,国产在线一区二区三区在线,最近中文字幕完整版视频

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          前端架構(gòu)師基于京東門戶編寫的7篇html、css實(shí)戰(zhàn),代碼免費(fèi)分享!

          情提示:以下代碼是我們邀請(qǐng)的前端架構(gòu)師基于京東門戶編寫的html、css代碼,現(xiàn)在免費(fèi)分享給大家,獲取的方式為:

          關(guān)注此頭條號(hào)“互聯(lián)網(wǎng)IT信息”——>私信發(fā)送 “京東html” ,即可得到源代碼的獲取方式。

          本專欄前篇文章中介紹了HttpBasic模式,該模式比較簡(jiǎn)單,只是進(jìn)行了通過(guò)攜帶Http的Header進(jìn)行簡(jiǎn)單的登錄驗(yàn)證,而且沒(méi)有可以定制的登錄頁(yè)面,所以使用場(chǎng)景比較窄。

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

          1. 新建項(xiàng)目

          在介紹相關(guān)內(nèi)容之前,需要先搭建一個(gè)demo,新建一個(gè)項(xiàng)目spring-security-02,需要添加依賴如下:

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

          除此之外其實(shí)還需要添加web、thymeleaf的依賴,這里就不在貼出來(lái)了

          demo結(jié)構(gòu)如下:

          2. 新建登錄頁(yè)面

          這里不再使用Security默認(rèn)的頁(yè)面,自己定制一個(gè),代碼如下:

          單純的一個(gè)表單登錄頁(yè)面,需要注意以下幾個(gè)參數(shù):

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

          以上三個(gè)參數(shù)都可以在security通過(guò)配置的方式定義

          3. 新建首頁(yè)

          這個(gè)是登錄成功后跳轉(zhuǎn)的首頁(yè),代碼如下:

          4. 新建接口

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

          5. formLogin配置

          在介紹如何配置之前,先來(lái)看下formLogin模式登錄的5個(gè)要素:

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

          一般來(lái)說(shuō),使用權(quán)限認(rèn)證框架的的業(yè)務(wù)系統(tǒng)登錄驗(yàn)證邏輯是固定的,而資源訪問(wèn)控制規(guī)則和用戶信息是從數(shù)據(jù)庫(kù)或其他存儲(chǔ)介質(zhì)靈活加載的。但本文所有的用戶、資源、權(quán)限信息都是代碼配置寫死的,旨在為大家介紹formLogin認(rèn)證模式,如何從數(shù)據(jù)庫(kù)加載權(quán)限認(rèn)證相關(guān)信息我還會(huì)結(jié)合RBAC權(quán)限模型再寫文章的。

          針對(duì)上述5個(gè)的要素,formLogin配置代碼如下:

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

          上述代碼分為兩個(gè)部分:

          第一部分是formLogin配置段,用于配置登錄驗(yàn)證邏輯相關(guān)的信息。如:登錄頁(yè)面、登錄成功頁(yè)面、登錄請(qǐng)求處理路徑等。

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

          第二部分是authorizeRequests配置段,用于配置資源的訪問(wèn)控制規(guī)則

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

          6. 用戶、角色配置

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

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

          上述的代碼配置很簡(jiǎn)單,創(chuàng)建了兩個(gè)用戶且指定了角色,分別如下:

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

          配置解釋如下:

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

          7. 簡(jiǎn)單測(cè)試

          按照上述6個(gè)步驟基本實(shí)現(xiàn)了一個(gè)表單登錄,下面測(cè)試一下

          瀏覽器訪問(wèn)http://localhost:8081/hello2,第一次訪問(wèn)由于未登錄會(huì)自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面,如下圖:

          輸入用戶名和密碼,由于/hello2這個(gè)資源需要admin的角色才能訪問(wèn),因此必須用admin這個(gè)用戶登錄,否則將會(huì)報(bào)403的錯(cuò)誤,登錄成功后將能夠正常訪問(wèn)

          如果用戶名或者密碼錯(cuò)誤將會(huì)觸發(fā).failureUrl("/login/page")這個(gè)配置,自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面

          8. 自定義登錄結(jié)果

          在第5步的配置中,和登錄結(jié)果相關(guān)的配置有如下兩個(gè):

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

          這兩個(gè)配置都是指定URL的方式:

          • 當(dāng)我們登錄成功的時(shí)候,是由AuthenticationSuccessHandler進(jìn)行登錄結(jié)果處理,默認(rèn)跳轉(zhuǎn)到defaultSuccessUrl配置的路徑對(duì)應(yīng)的資源頁(yè)面(一般是首頁(yè)index.html)。
          • 當(dāng)我們登錄失敗的時(shí)候,是由AuthenticationfailureHandler進(jìn)行登錄結(jié)果處理,默認(rèn)跳轉(zhuǎn)到failureUrl配置的路徑對(duì)應(yīng)的資源頁(yè)面(一般也是跳轉(zhuǎn)登錄頁(yè)login.html,重新登錄)。

          但是在web應(yīng)用開(kāi)發(fā)過(guò)程中需求是千變?nèi)f化的,有時(shí)需要我們針對(duì)登錄結(jié)果做個(gè)性化處理,比如:

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

          因此需要自定義的登錄結(jié)果,這篇文章先介紹如何定制跳轉(zhuǎn)頁(yè)面,關(guān)于JSON格式數(shù)據(jù)就是前后端分離架構(gòu)下需要用到,后文介紹

          8.1 自定義登錄成功結(jié)果

          AuthenticationSuccessHandler接口是Security提供的認(rèn)證成功處理器接口,我們只需要去實(shí)現(xiàn)它即可。但是通常來(lái)說(shuō),我們不會(huì)直接去實(shí)現(xiàn)AuthenticationSuccessHandler接口,而是繼承SavedRequestAwareAuthenticationSuccessHandler 類,這個(gè)類會(huì)記住用戶上一次請(qǐng)求的資源路徑,比如/hello2這個(gè)路徑,登錄成功后將會(huì)自動(dòng)跳轉(zhuǎn)到/hello2這個(gè)頁(yè)面而不是首頁(yè)

          代碼如下:

          8.2 自定義登錄失敗結(jié)果

          這里我們同樣沒(méi)有直接實(shí)現(xiàn)AuthenticationFailureHandler接口,而是繼承SimpleUrlAuthenticationFailureHandler 類。該類中默認(rèn)實(shí)現(xiàn)了登錄驗(yàn)證失敗的跳轉(zhuǎn)邏輯,即登陸失敗之后回到登錄頁(yè)面。我們可以利用這一點(diǎn)簡(jiǎn)化我們的代碼。

          代碼如下:

          8.3 SecurityConfig中配置

          配置如下:

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

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

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

          總結(jié)

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

          來(lái)源:https://juejin.cn/post/7140096326829621261

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


          網(wǎng)站的登陸頁(yè)面不僅要求內(nèi)容豐富,而且在視覺(jué)效果的設(shè)計(jì)上要求美感和良好印象,以吸引用戶深入訪問(wèn)頁(yè)面,為網(wǎng)站贏得忠誠(chéng)用戶。讓我們來(lái)分析一下企業(yè)網(wǎng)站建設(shè)登陸頁(yè)面設(shè)計(jì)的一些技巧。

          首先,網(wǎng)站登錄頁(yè)面的頭部設(shè)計(jì)。登錄頁(yè)的內(nèi)容必須有LOGO。企業(yè)網(wǎng)站應(yīng)向用戶展示企業(yè)標(biāo)識(shí),以便用戶一進(jìn)入網(wǎng)站就知道它是什么樣的網(wǎng)站,并向用戶傳達(dá)網(wǎng)站的主要業(yè)務(wù)是什么。網(wǎng)站的口號(hào)必須靠近logo,這樣才能與其他企業(yè)區(qū)分開(kāi)來(lái),并看到與同行的差異。右邊可以是企業(yè)的聯(lián)系方式,通常是企業(yè)的400電話號(hào)碼,這也是企業(yè)實(shí)力的展示。

          其次,網(wǎng)站的登錄頁(yè)必須有橫幅圖片。如果是企業(yè)網(wǎng)站,橫幅圖片可以是企業(yè)的成功案例,也可以是企業(yè)的優(yōu)勢(shì)產(chǎn)品。橫幅圖片的設(shè)計(jì)必須高檔、大氣、高端,圖片內(nèi)容應(yīng)與網(wǎng)站內(nèi)容一致,體現(xiàn)企業(yè)網(wǎng)站的專業(yè)性,影響企業(yè)形象。

          第三,登錄頁(yè)面應(yīng)重點(diǎn)介紹產(chǎn)品。企業(yè)肯定會(huì)有很多產(chǎn)品,而且這些產(chǎn)品的類型肯定是不同的。因此,登錄頁(yè)面的建設(shè)必須對(duì)這些產(chǎn)品進(jìn)行詳細(xì)介紹,并做好分類介紹,以便用戶在點(diǎn)擊想要了解的產(chǎn)品后可以輕松進(jìn)入詳細(xì)介紹頁(yè)面,這也是登錄頁(yè)面的導(dǎo)航功能。

          第四,登陸頁(yè)面應(yīng)顯示企業(yè)榮譽(yù)證書。企業(yè)網(wǎng)站是企業(yè)展示實(shí)力的最佳平臺(tái),而登錄頁(yè)面是最重要的環(huán)節(jié)。許多用戶通過(guò)登錄頁(yè)面了解網(wǎng)站。如果登錄頁(yè)面能夠證明企業(yè)的實(shí)力和優(yōu)勢(shì),用戶將留在網(wǎng)站上進(jìn)行深入訪問(wèn)。榮譽(yù)證書和一些相關(guān)部門的認(rèn)證是最好的解釋。

          第五,登錄頁(yè)面應(yīng)顯示企業(yè)的聯(lián)系信息。特別是一些交互式聯(lián)系信息,如在線客服系統(tǒng),可以增強(qiáng)與用戶的互動(dòng),增強(qiáng)用戶的信任。在解決用戶問(wèn)題的同時(shí),引導(dǎo)用戶對(duì)網(wǎng)站進(jìn)行深度訪問(wèn),提高網(wǎng)站的粘性。

          網(wǎng)站的登錄頁(yè)面對(duì)用戶很有吸引力,可以提高網(wǎng)站的轉(zhuǎn)化率。因此,登錄頁(yè)面的設(shè)計(jì)在網(wǎng)站建設(shè)中起著非常重要的作用。

          本文由妥妥網(wǎng)站建設(shè)原創(chuàng),點(diǎn)贊關(guān)注,帶你一起長(zhǎng)知識(shí)!


          了解更多


          主站蜘蛛池模板: 夜夜爽一区二区三区精品| 精品亚洲A∨无码一区二区三区| 日韩成人一区ftp在线播放| 无码一区18禁3D| 美女视频一区三区网站在线观看| 夜夜爽一区二区三区精品| 精品国产天堂综合一区在线| 亚洲香蕉久久一区二区| 精品爆乳一区二区三区无码av| 国语精品一区二区三区| 无码精品国产一区二区三区免费| 国产成人一区二区三区在线观看| 国产一区二区四区在线观看| 狠狠色婷婷久久一区二区三区| 波多野结衣高清一区二区三区| 国产一区二区三区高清在线观看| 一区二区三区无码高清视频| 国产精品无码一区二区在线观一| 日韩制服国产精品一区| 精品无码人妻一区二区三区| 亚洲一区二区三区成人网站 | 亚洲香蕉久久一区二区三区四区| 国内自拍视频一区二区三区 | 久久一区二区明星换脸| bt7086福利一区国产| 久久久久国产一区二区| 无码人妻久久久一区二区三区| AA区一区二区三无码精片| 国产伦一区二区三区免费| 精品少妇一区二区三区视频| 97人妻无码一区二区精品免费| 在线播放精品一区二区啪视频| 极品少妇伦理一区二区| 无码人妻精品一区二区蜜桃网站 | 国产精品久久久久一区二区三区| 久久久久无码国产精品一区| 国产精品揄拍一区二区久久| 日韩精品免费一区二区三区| 亚洲色偷偷偷网站色偷一区| 国产自产对白一区| 无码一区二区三区在线观看|