最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringSecurity 自定義表單登錄的實(shí)現(xiàn)

 更新時(shí)間:2020年01月24日 11:26:34   作者:Aska小強(qiáng)  
這篇文章主要介紹了SpringSecurity 自定義表單登錄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本篇主要講解 在SpringSecurity中 如何 自定義表單登錄 , SpringSecurity默認(rèn)提供了一個(gè)表單登錄,但是實(shí)際項(xiàng)目里肯定無法使用的,本篇就主要講解如何自定義表單登錄

1.創(chuàng)建SpringSecurity項(xiàng)目

1.1 使用IDEA

先通過IDEA 創(chuàng)建一個(gè)SpringBoot項(xiàng)目 并且依賴SpringSecurity,Web依賴

此時(shí)pom.xml會(huì)自動(dòng)添加

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.擴(kuò)展 WebSecurityConfigurerAdapter

WebSecurityConfigurerAdapter 是SpringSecurity 提供的用于我們擴(kuò)展自己的配置

 實(shí)現(xiàn)WebSecurityConfigurerAdapter經(jīng)常需要重寫的:

1、configure(AuthenticationManagerBuilder auth);

2、configure(WebSecurity web);

3、configure(HttpSecurity http);

2.1 默認(rèn) WebSecurityConfigurerAdapter 為我們提供了一些基礎(chǔ)配置如下

protected void configure(HttpSecurity http) throws Exception {
  logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");

  http
    .authorizeRequests()
      .anyRequest().authenticated()
      .and()
    .formLogin().and()
    .httpBasic();
}

2.2 創(chuàng)建自定義的 WebSecurityConfigurer

1.formLogin() 開啟表單登錄,該方法會(huì)應(yīng)用 FormLoginConfigurer 到HttpSecurity上,后續(xù)會(huì)被轉(zhuǎn)換為對(duì)應(yīng)的Filter
2.loginPage() 配置自定義的表單頁面
3.authorizeRequests().anyRequest().authenticated(); 表示任何請(qǐng)求接口都要認(rèn)證**

@Configuration
@Slf4j
public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {

 

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.csrf().disable()
      .formLogin()
      .loginPage("/mylogin.html")
      .and()
      .authorizeRequests().anyRequest().authenticated();
      
  }
}  

2.3 mylogin.html

<!DOCTYPE html>
<html lang="en">
 <head>
   <meta charset="UTF-8">
   <title>Title</title>
 </head>
 <body>
  <h1>標(biāo)準(zhǔn)登錄頁面</h1>
  <h3>表單登錄</h3>

 <form action="/login" method="post">
  <table>
  <tr>
    <td>用戶名:</td>
    <td><input type="text" name="username"/></td>
  </tr>

  <tr>
    <td>密碼:</td>
    <td><input type="password" name="password"/></td>
  </tr>

  <tr>
    <td colspan="2">
      <button type="submit">登錄</button>
    </td>
  </tr>
  </table>
 </form>
</body>
</html>

3.訪問自定義登錄頁面(注意有重定向過多問題)

啟動(dòng)項(xiàng)目 并且直接訪問

http://localhost:8080

會(huì)發(fā)現(xiàn)瀏覽器報(bào) 重定向次數(shù)過多,這是什么原因呢?

這是因?yàn)?我們上面配置了 loginPage("/mylogin.html") ,但是這個(gè)路徑它沒有被允許訪問,也就是當(dāng)重定向到/mylogin.html路徑后,還是會(huì)因?yàn)樾枰J(rèn)證 被重定向道 /mylogin.html 導(dǎo)致該錯(cuò)誤

4.允許登錄頁面路徑訪問 antMatchers("/mylogin.html").permitAll()

只需要在配置的地方 添加 .antMatchers("/mylogin.html").permitAll() 允許這個(gè)路徑

  http.csrf().disable()
      .formLogin()
      .loginPage("/mylogin.html")
      .and()
      .authorizeRequests()
      .antMatchers("/mylogin.html").permitAll()
      .anyRequest().authenticated();

再次訪問,我們自定義的表單就顯示出來了(忽略樣式。。。)

此時(shí)我們輸入用戶名 user 密碼 : 控制臺(tái)打印

Using generated security password: 6bf253eb-c785-42b6-b147-b0fe2971586e

發(fā)現(xiàn)又跳轉(zhuǎn)到 /mylogin.html頁面,這是因?yàn)?當(dāng)我們配置了 loginPage("/mylogin.html")之后 處理表單登錄的過濾器它所攔截的請(qǐng)求就不再是 /login (默認(rèn)是 /login) ,攔截的登錄請(qǐng)求地址變成了 和 loginPage一樣的 mylogin.html

此時(shí)如果將 action地址改成 /mylogin.html ,那么再登錄 就能成功

<form action="/mylogin.html" method="post">

5.配置自定義登錄接口路徑 loginProcessingUrl

由于我們上面配置了 loginPage ,則對(duì)應(yīng)登錄接口路徑也變成了 loginPage所配置的 mylogin.html,但是當(dāng)我們不想使用這個(gè)作為接口路徑的時(shí)候,可以通過以下配置來修改

通過 loginProcessingUrl 類配置處理登錄請(qǐng)求的路徑

 http.csrf().disable()
      .formLogin()
      .loginPage("/mylogin.html")
      .loginProcessingUrl("/auth/login")
      .and()
      .authorizeRequests()
      .antMatchers("/mylogin.html").permitAll()
      .anyRequest().authenticated();

記得和action 對(duì)應(yīng)

<form action="/auth/login" method="post">

至此SpringSecurity自定義登錄頁面的配置 以及注意事項(xiàng)全部說完

6. 總結(jié)

本篇主要講解 在SpringSecurity中 如何 自定義表單登, 是不是非常簡(jiǎn)單 ,但是也有一些要注意的點(diǎn)
1.擴(kuò)展WebSecurityConfigurerAdapter
2.配置loginPage 頁面路徑
3.允許loginPage 頁面路徑 訪問
4.配置登錄請(qǐng)求的路徑 loginProcessingUrl**

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java事件監(jiān)聽機(jī)制講解

    Java事件監(jiān)聽機(jī)制講解

    今天小編就為大家分享一篇關(guān)于Java事件監(jiān)聽機(jī)制講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Java中的ByteArrayInputStream詳解

    Java中的ByteArrayInputStream詳解

    Java中,ByteArrayInputStream類是實(shí)現(xiàn)內(nèi)存級(jí)別的字節(jié)流讀取的工具,可以從字節(jié)數(shù)組中讀取數(shù)據(jù),這個(gè)類位于java.io包中,繼承自InputStream,ByteArrayInputStream的主要特點(diǎn)有:在內(nèi)存中操作,不涉及磁盤IO,可以重用流讀取數(shù)據(jù)
    2024-09-09
  • java的main方法中調(diào)用spring的service方式

    java的main方法中調(diào)用spring的service方式

    這篇文章主要介紹了在java的main方法中調(diào)用spring的service方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java 題解LeetCode38外觀數(shù)列示例

    java 題解LeetCode38外觀數(shù)列示例

    這篇文章主要為大家介紹了java 題解LeetCode38外觀數(shù)列示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java如何在 Word 中設(shè)置上、下標(biāo)

    Java如何在 Word 中設(shè)置上、下標(biāo)

    這篇文章主要介紹了Java如何在 Word 中設(shè)置上、下標(biāo),幫助大家更好的利用Java處理文檔,感興趣的朋友可以了解下
    2020-09-09
  • Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例

    Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例

    這篇文章主要介紹了Java高并發(fā)編程之CAS實(shí)現(xiàn)無鎖隊(duì)列代碼實(shí)例,在多線程操作中,我們通常會(huì)添加鎖來保證線程的安全,那么這樣勢(shì)必會(huì)影響程序的性能,那么為了解決這一問題,于是就有了在無鎖操作的情況下依然能夠保證線程的安全,需要的朋友可以參考下
    2023-12-12
  • Springboot中使用Redisson+AOP+自定義注解實(shí)現(xiàn)訪問限流與黑名單攔截

    Springboot中使用Redisson+AOP+自定義注解實(shí)現(xiàn)訪問限流與黑名單攔截

    本文主要介紹了Springboot中使用Redisson+AOP+自定義注解實(shí)現(xiàn)訪問限流與黑名單攔截,包含針對(duì)用戶IP限流,整個(gè)接口的訪問限流,以及對(duì)某個(gè)參數(shù)字段的限流,并且支持請(qǐng)求限流后處理回調(diào),感興趣的可以了解一下
    2024-02-02
  • SpringBoot自定義Starter實(shí)現(xiàn)流程詳解

    SpringBoot自定義Starter實(shí)現(xiàn)流程詳解

    SpringBoot中的starter是一種非常重要的機(jī)制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進(jìn)starter,應(yīng)用者只需要在maven中引入starter依賴,SpringBoot就能自動(dòng)掃描到要加載的信息并啟動(dòng)相應(yīng)的默認(rèn)配置。starter讓我們擺脫了各種依賴庫(kù)的處理,需要配置各種信息的困擾
    2022-09-09
  • MyBatis Plus實(shí)現(xiàn)一對(duì)多的查詢場(chǎng)景的三種方法

    MyBatis Plus實(shí)現(xiàn)一對(duì)多的查詢場(chǎng)景的三種方法

    MyBatis Plus提供了多種簡(jiǎn)便的方式來進(jìn)行一對(duì)多子查詢,本文主要介紹了MyBatis Plus實(shí)現(xiàn)一對(duì)多的查詢場(chǎng)景的三種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • MyBatis-Plus模糊查詢特殊字符串轉(zhuǎn)義的實(shí)現(xiàn)

    MyBatis-Plus模糊查詢特殊字符串轉(zhuǎn)義的實(shí)現(xiàn)

    使用MyBatis中的模糊查詢時(shí),當(dāng)查詢關(guān)鍵字中包括有_、\、%時(shí),查詢關(guān)鍵字失效,本文主要介紹了MyBatis-Plus模糊查詢特殊字符串轉(zhuǎn)義的實(shí)現(xiàn),感興趣的可以了解一下
    2024-06-06

最新評(píng)論

南木林县| 尼勒克县| 怀集县| 凤城市| 新沂市| 安平县| 门源| 昭通市| 绥宁县| 临颍县| 渑池县| 航空| 晋州市| 西充县| 晋城| 姜堰市| 搜索| 万年县| 鹤庆县| 神池县| 施甸县| 临武县| 东港市| 利辛县| 五莲县| 元氏县| 香港 | 衡阳县| 东安县| 三门峡市| 城口县| 恩平市| 苍山县| 永春县| 肥乡县| 崇礼县| 重庆市| 七台河市| 交城县| 平定县| 灵川县|