欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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.擴(kuò)展 WebSecurityConfigurerAdapter

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

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

啟動項目 并且直接訪問

http://localhost:8080

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

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

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頁面,這是因為 當(dāng)我們配置了 loginPage("/mylogin.html")之后 處理表單登錄的過濾器它所攔截的請求就不再是 /login (默認(rèn)是 /login) ,攔截的登錄請求地址變成了 和 loginPage一樣的 mylogin.html

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

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

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

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

通過 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.擴(kuò)展WebSecurityConfigurerAdapter
2.配置loginPage 頁面路徑
3.允許loginPage 頁面路徑 訪問
4.配置登錄請求的路徑 loginProcessingUrl**

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

相關(guān)文章

  • 如何在Spring Boot項目中使用Spring AI

    如何在Spring Boot項目中使用Spring AI

    Spring AI是Spring框架中用于集成和使用人工智能和機(jī)器學(xué)習(xí)功能的組件,它提供了一種簡化的方式來與AI模型進(jìn)行交互,這篇文章主要介紹了Spring Boot 在項目中使用Spring AI,需要的朋友可以參考下
    2024-05-05
  • SpringBoot+Redis Bitmap實現(xiàn)活躍用戶統(tǒng)計

    SpringBoot+Redis Bitmap實現(xiàn)活躍用戶統(tǒng)計

    Redis的Bitmap數(shù)據(jù)結(jié)構(gòu)是一種緊湊的位圖,它可以用于實現(xiàn)各種場景,其中統(tǒng)計活躍用戶是一種經(jīng)典的業(yè)務(wù)場景,下面我們就來學(xué)習(xí)一下SpringBoot如何利用Redis中的Bitmap實現(xiàn)活躍用戶統(tǒng)計吧
    2023-11-11
  • JavaSE實戰(zhàn)之酒店訂房系統(tǒng)的實現(xiàn)

    JavaSE實戰(zhàn)之酒店訂房系統(tǒng)的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaSE實現(xiàn)酒店訂房系統(tǒng),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaSE開發(fā)有一定的幫助,需要的可以參考一下
    2022-07-07
  • 淺談Spring中的循環(huán)依賴問題與解決方案

    淺談Spring中的循環(huán)依賴問題與解決方案

    這篇文章主要介紹了淺談Spring中的循環(huán)依賴問題與解決方案,循環(huán)依賴就是兩個或則兩個以上的bean互相持有對方,最終形成閉環(huán),比如A依賴于B,B依賴于C,C又依賴于A,需要的朋友可以參考下
    2023-12-12
  • 詳解SpringBoot容器的生命周期

    詳解SpringBoot容器的生命周期

    在使用SpringBoot進(jìn)行開發(fā)時,我們經(jīng)常需要對Spring容器的生命周期進(jìn)行了解和掌握,本文將介紹SpringBoot容器的生命周期,包括容器的創(chuàng)建、初始化、銷毀等過程,并提供相應(yīng)的代碼示例
    2023-06-06
  • Sequelize 常用操作詳解及實例代碼

    Sequelize 常用操作詳解及實例代碼

    這篇文章主要介紹了Sequelize 常用操作詳解及實例代碼的相關(guān)資料,希望能幫助到大家,需要的朋友可以參考下
    2016-11-11
  • Spring MVC 中 AJAX請求并返回JSON的示例

    Spring MVC 中 AJAX請求并返回JSON的示例

    本篇文章主要介紹了Spring MVC 中 AJAX請求并返回JSON,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • RocketMQ中的消費模式和消費策略詳解

    RocketMQ中的消費模式和消費策略詳解

    這篇文章主要介紹了RocketMQ中的消費模式和消費策略詳解,RocketMQ 是基于發(fā)布訂閱模型的消息中間件,所謂的發(fā)布訂閱就是說,consumer 訂閱了 broker 上的某個 topic,當(dāng) producer 發(fā)布消息到 broker 上的該 topic 時,consumer 就能收到該條消息,需要的朋友可以參考下
    2023-10-10
  • 如何用java生成指定范圍的隨機(jī)數(shù)

    如何用java生成指定范圍的隨機(jī)數(shù)

    以生成[10,20]隨機(jī)數(shù)為例,首先生成0-20的隨機(jī)數(shù),然后對(20-10+1)取模得到[0-10]之間的隨機(jī)數(shù),然后加上min=10,最后生成的是10-20的隨機(jī)數(shù)
    2013-09-09
  • SpringBoot啟動security后如何關(guān)閉彈出的/login頁面

    SpringBoot啟動security后如何關(guān)閉彈出的/login頁面

    這篇文章主要介紹了SpringBoot啟動security后如何關(guān)閉彈出的login頁面問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論