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

如何使用Spring Security手動(dòng)驗(yàn)證用戶的方法示例

 更新時(shí)間:2019年05月24日 10:01:59   作者:程序猿Knight  
這篇文章主要介紹了如何使用Spring Security手動(dòng)驗(yàn)證用戶的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1.概述

在這篇快速文章中,我們將 重點(diǎn)介紹如何以編程方式在Spring Security和Spring MVC中設(shè)置經(jīng)過(guò)身份驗(yàn)證的用戶 。

2. Spring Security

簡(jiǎn)而言之, Spring Security在ThreadLocal中保存每個(gè)經(jīng)過(guò)身份驗(yàn)證的用戶的主要信息 - 保存的是Authentication對(duì)象 。

為了構(gòu)造和設(shè)置此Authentication對(duì)象, 通常我們需要使用Spring Security在標(biāo)準(zhǔn)身份驗(yàn)證上構(gòu)建對(duì)象的相 同方法。

要讓我們手動(dòng)觸發(fā)身份驗(yàn)證, 然后將生成的身份驗(yàn)證對(duì)象設(shè)置為框架用來(lái)保存當(dāng)前登錄用戶的當(dāng)前SecurityContext :

UsernamePasswordAuthenticationToken authReq
 = new UsernamePasswordAuthenticationToken(user, pass);
Authentication auth = authManager.authenticate(authReq);
SecurityContext sc = SecurityContextHolder.getContext();
securityContext.setAuthentication(auth);

在上下文中設(shè)置身 份驗(yàn)證后,我們現(xiàn)在可以使用securityContext.getAuthentication()。isAuthenticated()檢查當(dāng)前用戶是否經(jīng)過(guò)身份驗(yàn)證 。

3. Spring MVC

默認(rèn)情況下,Spring Security 在Spring Security過(guò)濾器鏈中添加了一個(gè)額外的過(guò)濾器。它能夠持久化Security 上下 文(SecurityContextPersistenceFilter類)。

反過(guò)來(lái), 它將Security上下文的持久性委托給SecurityContextRepository的實(shí)例,默認(rèn)為HttpSessionSecurityContextRepository 類。

因此,為了 在請(qǐng)求上設(shè)置身份驗(yàn)證并因此使其可用于來(lái)自客戶端的所有后續(xù)請(qǐng)求,我們需要在HTTP會(huì)話中手動(dòng)設(shè)置包含身份驗(yàn)證的SecurityContext :

public void login(HttpServletRequest req, String user, String pass) { 
  UsernamePasswordAuthenticationToken authReq
   = new UsernamePasswordAuthenticationToken(user, pass);
  Authentication auth = authManager.authenticate(authReq);
   
  SecurityContext sc = SecurityContextHolder.getContext();
  sc.setAuthentication(auth);
  HttpSession session = req.getSession(true);
  session.setAttribute(SPRING_SECURITY_CONTEXT_KEY, sc);
}

SPRING_SECURITY_CONTEXT_KEY是靜態(tài)導(dǎo)入的HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY。

應(yīng)該注意 的是,我們不能直接使用HttpSessionSecurityContextRepository - 因?yàn)樗cSecurityContextPersistenceFilter一起 使用。

這是因?yàn)檫^(guò)濾 器使用存儲(chǔ)庫(kù)來(lái)加載和存儲(chǔ)Security上下文在前,在鏈中執(zhí)行其余已定義的過(guò)濾器在后,但是它在傳遞給鏈的響應(yīng)上使用自定義 包裝器。。

因此,在這種情況下,您應(yīng)該知道所使用的包裝器的類類型,并將其傳遞給存儲(chǔ)庫(kù)中的相應(yīng)save方法。

4.總結(jié)

在這個(gè)快速教程中,我們討論了如何在Spring Security上下文中手動(dòng)設(shè)置用戶身份驗(yàn)證以及如何使其可用于Spring MVC的目標(biāo)。專注于代碼示例,說(shuō)明實(shí)現(xiàn)它的最簡(jiǎn)單 方法。

與往常一樣,可以 在GitHub上找到代碼 示例。

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

相關(guān)文章

  • springboot整合knife4j全過(guò)程

    springboot整合knife4j全過(guò)程

    這篇文章主要介紹了springboot整合knife4j全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺談一下Java的線程并發(fā)

    淺談一下Java的線程并發(fā)

    大家好,本篇文章主要講的是淺談一下Java的線程并發(fā),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • java中VO和DTO之間的轉(zhuǎn)換實(shí)現(xiàn)

    java中VO和DTO之間的轉(zhuǎn)換實(shí)現(xiàn)

    本文主要介紹了java中VO和DTO之間的轉(zhuǎn)換實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 詳解SpringBoot如何優(yōu)雅的進(jìn)行前后端通信

    詳解SpringBoot如何優(yōu)雅的進(jìn)行前后端通信

    現(xiàn)在的項(xiàng)目基本上都是前后端分離的項(xiàng)目,如何打通前后端,接收前端傳過(guò)來(lái)的參數(shù)呢,下面小編就來(lái)和大家詳細(xì)介紹一下SpringBoot如何優(yōu)雅的進(jìn)行前后端通信
    2024-03-03
  • Java爬蟲抓取視頻網(wǎng)站下載鏈接

    Java爬蟲抓取視頻網(wǎng)站下載鏈接

    本文是通過(guò)JAVA獲取優(yōu)酷、土豆、酷6、6間房等視頻,小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • java驗(yàn)證用戶是否已經(jīng)登錄 java實(shí)現(xiàn)自動(dòng)登錄

    java驗(yàn)證用戶是否已經(jīng)登錄 java實(shí)現(xiàn)自動(dòng)登錄

    這篇文章主要介紹了java驗(yàn)證用戶是否已經(jīng)登錄,java實(shí)現(xiàn)自動(dòng)登錄,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Java實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼(前端部分)

    Java實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼(前端部分)

    這篇文章主要為大家介紹了如何用Java語(yǔ)言實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼的生成(前端部分),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-10-10
  • Google Guava 緩存工具使用詳解

    Google Guava 緩存工具使用詳解

    這篇文章主要介紹了Guava自加載緩存LoadingCache使用指南,通過(guò)這些內(nèi)容介紹,了解了LoadingCache的基本原理和用法,包括如何創(chuàng)建和配置緩存,以及如何結(jié)合Java?8的特性來(lái)優(yōu)化代碼,需要的朋友可以參考下
    2023-12-12
  • 詳解如何在Java中調(diào)用Python程序

    詳解如何在Java中調(diào)用Python程序

    今天給大家?guī)?lái)的是關(guān)于Java中調(diào)用Python程序的相關(guān)知識(shí),文章有非常詳細(xì)的代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java字符串拼接的優(yōu)雅方式實(shí)例詳解

    Java字符串拼接的優(yōu)雅方式實(shí)例詳解

    字符串拼接一般使用“+”,但是“+”不能滿足大批量數(shù)據(jù)的處理,下面這篇文章主要給大家介紹了關(guān)于Java字符串拼接的幾種優(yōu)雅方式,需要的朋友可以參考下
    2021-07-07

最新評(píng)論