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

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

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

本篇主要講解 在SpringSecurity中 如何 自定義表單登錄 , SpringSecurity默認提供了一個表單登錄,但是實際項目里肯定無法使用的,本篇就主要講解如何自定義表單登錄

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

1.1 使用IDEA

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

此時pom.xml會自動添加

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

2.擴展 WebSecurityConfigurerAdapter

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

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

1、configure(AuthenticationManagerBuilder auth);

2、configure(WebSecurity web);

3、configure(HttpSecurity http);

2.1 默認 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() 開啟表單登錄,該方法會應(yīng)用 FormLoginConfigurer 到HttpSecurity上,后續(xù)會被轉(zhuǎn)換為對應(yīng)的Filter
2.loginPage() 配置自定義的表單頁面
3.authorizeRequests().anyRequest().authenticated(); 表示任何請求接口都要認證**

@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>標準登錄頁面</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.訪問自定義登錄頁面(注意有重定向過多問題)

啟動項目 并且直接訪問

http://localhost:8080

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

這是因為 我們上面配置了 loginPage("/mylogin.html") ,但是這個路徑它沒有被允許訪問,也就是當重定向到/mylogin.html路徑后,還是會因為需要認證 被重定向道 /mylogin.html 導致該錯誤

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

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

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

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

此時我們輸入用戶名 user 密碼 : 控制臺打印

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

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

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

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

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

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

通過 loginProcessingUrl 類配置處理登錄請求的路徑

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

記得和action 對應(yīng)

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

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

6. 總結(jié)

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    Java中的ByteArrayInputStream詳解

    Java中,ByteArrayInputStream類是實現(xiàn)內(nèi)存級別的字節(jié)流讀取的工具,可以從字節(jié)數(shù)組中讀取數(shù)據(jù),這個類位于java.io包中,繼承自InputStream,ByteArrayInputStream的主要特點有:在內(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方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java 題解LeetCode38外觀數(shù)列示例

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

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

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

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

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

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

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

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

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

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

    MyBatis Plus實現(xiàn)一對多的查詢場景的三種方法

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

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

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

最新評論

镇宁| 张家界市| 铜鼓县| 洛扎县| 云林县| 垫江县| 新丰县| 开阳县| 金华市| 苏尼特左旗| 陕西省| 贵州省| 分宜县| 冀州市| 洛南县| 乌兰察布市| 澄迈县| 大城县| 丰镇市| 厦门市| 修水县| 北安市| 鞍山市| 彭水| 沐川县| 辽宁省| 镶黄旗| 晴隆县| 衡阳县| 昭觉县| 平乐县| 成都市| 巴楚县| 子洲县| 祁门县| 和田市| 长葛市| 贞丰县| 余干县| 景洪市| 台南县|