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

自定義Spring Security的身份驗(yàn)證失敗處理方法

 更新時(shí)間:2019年05月30日 16:15:27   投稿:laozhang  
在本篇文章里小編給大家整理了一篇關(guān)于自定義Spring Security的身份驗(yàn)證失敗的處理方法,有需要的朋友們學(xué)習(xí)下。

1.概述

在本快速教程中,我們將演示如何在Spring Boot應(yīng)用程序中自定義Spring Security的身份驗(yàn)證失敗處理。目標(biāo)是使用表單登錄方法對(duì)用戶進(jìn)行身份驗(yàn)證。

2.認(rèn)證和授權(quán)(Authentication and Authorization)

身份驗(yàn)證和授權(quán)通常結(jié)合使用,因?yàn)樗鼈冊(cè)谑谟柘到y(tǒng)訪問(wèn)權(quán)限時(shí)起著重要且同樣重要的作用。

但是,它們具有不同的含義,并在驗(yàn)證請(qǐng)求時(shí)應(yīng)用不同的約束:

身份驗(yàn)證 - 在授權(quán)之前;它是關(guān)于驗(yàn)證收到的憑證;我們驗(yàn)證用戶名和密碼是否與我們的應(yīng)用程序識(shí)別的用戶名和密碼相匹配
授權(quán) - 用于驗(yàn)證成功通過(guò)身份驗(yàn)證的用戶是否有權(quán)訪問(wèn)應(yīng)用程序的某個(gè)功能

我們可以自定義身份驗(yàn)證和授權(quán)失敗處理,但是,在此應(yīng)用程序中,我們將專注于身份驗(yàn)證失敗。

3. Spring Security的AuthenticationFailureHandler

Spring Security提供了一個(gè)默認(rèn)處理身份驗(yàn)證失敗的組件。

但是,我們發(fā)現(xiàn)于默認(rèn)行為不足以滿足實(shí)際要求的情況是很常見(jiàn)的。

如果是這種情況,我們可以創(chuàng)建自己的組件并通過(guò)實(shí)現(xiàn)AuthenticationFailureHandler接口提供我們想要的自定義行為:

public class CustomAuthenticationFailureHandler 
 implements AuthenticationFailureHandler {
 
  private ObjectMapper objectMapper = new ObjectMapper();
 
  @Override
  public void onAuthenticationFailure(
   HttpServletRequest request,
   HttpServletResponse response,
   AuthenticationException exception) 
   throws IOException, ServletException {
 
    response.setStatus(HttpStatus.UNAUTHORIZED.value());
    Map<String, Object> data = new HashMap<>();
    data.put(
     "timestamp", 
     Calendar.getInstance().getTime());
    data.put(
     "exception", 
     exception.getMessage());
 
    response.getOutputStream()
     .println(objectMapper.writeValueAsString(data));
  }
}

默認(rèn)情況下,Spring使用包含錯(cuò)誤信息的請(qǐng)求參數(shù)將用戶重定向回登錄頁(yè)面。

在此應(yīng)用程序中,我們將返回401響應(yīng),其中包含有關(guān)錯(cuò)誤的信息以及錯(cuò)誤發(fā)生的時(shí)間戳。

  • DelegatingAuthenticationFailureHandler將AuthenticationException子類委托給不同的AuthenticationFailureHandler,這意味著我們可以為AuthenticationException的不同實(shí)例創(chuàng)建不同的行為
  • ExceptionMappingAuthenticationFailureHandler根據(jù)AuthenticationException的完整類名將用戶重定向到特定的URL
  • 無(wú)論AuthenticationException的類型如何,F(xiàn)orwardAuthenticationFailureHandler都會(huì)將用戶轉(zhuǎn)發(fā)到指定的URL
  • SimpleUrlAuthenticationFailureHandler是默認(rèn)使用的組件,如果指定,它會(huì)將用戶重定向到failureUrl;否則,它只會(huì)返回401響應(yīng)

現(xiàn)在我們已經(jīng)創(chuàng)建了自定義AuthenticationFailureHandler,讓我們配置我們的應(yīng)用程序并覆蓋Spring的默認(rèn)處理程序:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration 
 extends WebSecurityConfigurerAdapter {
 
  @Override
  protected void configure(AuthenticationManagerBuilder auth) 
   throws Exception {
    auth
     .inMemoryAuthentication()
     .withUser("baeldung")
     .password("baeldung")
     .roles("USER");
  }
 
  @Override
  protected void configure(HttpSecurity http) 
   throws Exception {
    http
     .authorizeRequests()
     .anyRequest()
     .authenticated()
     .and()
     .formLogin()
     .failureHandler(customAuthenticationFailureHandler());
  }
 
  @Bean
  public AuthenticationFailureHandler customAuthenticationFailureHandler() {
    return new CustomAuthenticationFailureHandler();
  }
}

注意failureHandler()調(diào)用,我們可以告訴Spring使用我們的自定義組件而不是使用默認(rèn)組件。

4.結(jié)論

在此示例中,我們使用Spring的AuthenticationFailureHandler接口自定義了應(yīng)用程序的身份驗(yàn)證失敗處理程序。

github源碼:https://github.com/eugenp/tutorials/tree/master/spring-security-mvc-login

相關(guān)文章

  • java基于socket傳輸zip文件功能示例

    java基于socket傳輸zip文件功能示例

    這篇文章主要介紹了java基于socket傳輸zip文件功能,結(jié)合實(shí)例形式分析了java使用socket進(jìn)行文件傳輸?shù)木唧w操作步驟與服務(wù)器端、客戶端相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • @RereshScope刷新的原理詳解

    @RereshScope刷新的原理詳解

    在配合配置中心修改配置讓應(yīng)用自動(dòng)刷新配置時(shí),我們要在需要感知配置變化的bean上面加上@RereshScope。如果我們不加上這注解,那么有可能無(wú)法完成配置自動(dòng)刷新。本文就來(lái)和大家講講@RereshScope刷新的原理,需要的可以參考一下
    2022-12-12
  • Java實(shí)現(xiàn)AOP功能的封裝與配置的小框架實(shí)例代碼

    Java實(shí)現(xiàn)AOP功能的封裝與配置的小框架實(shí)例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)AOP功能的封裝與配置的小框架實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 簡(jiǎn)單了解SpringCloud運(yùn)行原理

    簡(jiǎn)單了解SpringCloud運(yùn)行原理

    這篇文章主要介紹了簡(jiǎn)單了解SpringCloud運(yùn)行原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Spring?Boot中@Validated注解不生效問(wèn)題匯總大全

    Spring?Boot中@Validated注解不生效問(wèn)題匯總大全

    這篇文章主要給大家介紹了關(guān)于Spring?Boot中@Validated注解不生效問(wèn)題匯總的相關(guān)資料,@Validated注解是Spring框架中的一個(gè)注解,用于在方法參數(shù)上添加參數(shù)校驗(yàn)規(guī)則,需要的朋友可以參考下
    2023-07-07
  • 詳解Java數(shù)組擴(kuò)容縮容與拷貝的實(shí)現(xiàn)和原理

    詳解Java數(shù)組擴(kuò)容縮容與拷貝的實(shí)現(xiàn)和原理

    這篇文章主要帶大家學(xué)習(xí)數(shù)組的擴(kuò)容、縮容及拷貝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • idea如何配置javafxsdk詳細(xì)教程

    idea如何配置javafxsdk詳細(xì)教程

    這篇文章主要介紹了idea如何配置javafxsdk,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)火鍋工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • windows下 jdk1.7安裝教程圖解

    windows下 jdk1.7安裝教程圖解

    java編程的初學(xué)者在開(kāi)始編碼前都會(huì)遇到一個(gè)難題,那就是jdk1.7環(huán)境變量配置怎么操作,怎么安裝,針對(duì)這個(gè)難題,小編特地為大家整理相關(guān)教程,不了解的朋友可以前往查看使用
    2018-05-05
  • JAVA學(xué)習(xí)之一步步搭建spring框架

    JAVA學(xué)習(xí)之一步步搭建spring框架

    這篇文章主要介紹了JAVA學(xué)習(xí)之一步步搭建spring框架,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 使用Java實(shí)現(xiàn)6種常見(jiàn)負(fù)載均衡算法

    使用Java實(shí)現(xiàn)6種常見(jiàn)負(fù)載均衡算法

    Java負(fù)載均衡算法也是分布式系統(tǒng)中的重要組成部分,用于將來(lái)自客戶端的請(qǐng)求分配到不同的后端服務(wù)器上,本文將介紹常見(jiàn)的Java負(fù)載均衡算法,輪詢法、加權(quán)隨機(jī)法……一次性讓你了解?6?種常見(jiàn)負(fù)載均衡算法
    2023-06-06

最新評(píng)論

论坛| 清苑县| 莆田市| 吉隆县| 陕西省| 巴彦淖尔市| 南京市| 望江县| 阿拉善左旗| 喀喇沁旗| 定兴县| 纳雍县| 嘉鱼县| 闸北区| 灌南县| 区。| 塔城市| 阳春市| 洛宁县| 婺源县| 中卫市| 盘锦市| 孟村| 巴东县| 科技| 旺苍县| 清河县| 枣阳市| 久治县| 赣州市| 建水县| 时尚| 赣榆县| 宜宾市| 龙山县| 开化县| 大方县| 习水县| 共和县| 历史| 英超|