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

SpringBoot+Spring Security基于內(nèi)存用戶認(rèn)證的實(shí)現(xiàn)

 更新時(shí)間:2024年11月27日 10:14:43   作者:憂傷夏天的風(fēng)  
本文介紹了SpringBoot+Spring Security基于內(nèi)存用戶認(rèn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、Spring Security框架

1. 框架簡(jiǎn)介

官方介紹:Spring Security是一個(gè)功能強(qiáng)大且可高度自定義的身份驗(yàn)證和訪問控制框架。它是保護(hù)基于Spring的應(yīng)用程序的事實(shí)標(biāo)準(zhǔn)。 Spring Security是一個(gè)專注于為Java應(yīng)用程序提供身份驗(yàn)證和授權(quán)的框架。與所有Spring項(xiàng)目一樣,Spring Security的真正強(qiáng)大之處在于它可以輕松擴(kuò)展以滿足自定義要求。

Spring Security是一個(gè)為基于Spring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方式的安全框架(簡(jiǎn)單說是對(duì)訪問權(quán)限進(jìn)行控制),應(yīng)用的安全性包括用戶認(rèn)證(Authentication)和用戶授權(quán)(Authorization)兩個(gè)部分。Spring Security的主要核心功能為 認(rèn)證和授權(quán),所有的架構(gòu)也是基于這兩個(gè)核心功能去實(shí)現(xiàn)的。

  • 用戶認(rèn)證指的是驗(yàn)證某個(gè)用戶是否為系統(tǒng)中的合法主體,也就是說用戶能否訪問該系統(tǒng)。用戶認(rèn)證一般要求用戶提供用戶名和密碼。系統(tǒng)通過校驗(yàn)用戶名和密碼來完成認(rèn)證過程。
  • 用戶授權(quán)指的是驗(yàn)證某個(gè)用戶是否有權(quán)限執(zhí)行某個(gè)操作。在一個(gè)系統(tǒng)中,不同用戶所具有的權(quán)限是不同的。比如對(duì)一個(gè)文件來說,有的用戶只能進(jìn)行讀取,而有的用戶可以進(jìn)行修改。一般來說,系統(tǒng)會(huì)為不同的用戶分配不同的角色,而每個(gè)角色則對(duì)應(yīng)一系列的權(quán)限。

特征:

  • 對(duì)身份驗(yàn)證和授權(quán)的全面和可擴(kuò)展的支持
  • 防止會(huì)話固定,點(diǎn)擊劫持,跨站點(diǎn)請(qǐng)求偽造等攻擊
  • Servlet API集成
  • 可選與Spring Web MVC集成

2. 框架原理

想要對(duì)對(duì)Web資源進(jìn)行保護(hù),最好的辦法莫過于Filter,要想對(duì)方法調(diào)用進(jìn)行保護(hù),最好的辦法莫過于AOP。所以Spring Security在我們進(jìn)行用戶認(rèn)證以及授予權(quán)限的時(shí)候,通過各種各樣的攔截器來控制權(quán)限的訪問,從而實(shí)現(xiàn)安全。

Spring Security 框架的主要過濾器(Filter) : 

  • WebAsyncManagerIntegrationFilter 
  • SecurityContextPersistenceFilter 
  • HeaderWriterFilter 
  • CorsFilter 
  • LogoutFilter
  • RequestCacheAwareFilter
  • SecurityContextHolderAwareRequestFilter
  • AnonymousAuthenticationFilter
  • SessionManagementFilter
  • ExceptionTranslationFilter
  • FilterSecurityInterceptor
  • UsernamePasswordAuthenticationFilter
  • BasicAuthenticationFilter

  Spring Security框架的核心組件:

  • SecurityContextHolder:提供對(duì)SecurityContext的訪問
  • SecurityContext:持有Authentication對(duì)象和其他可能需要的信息
  • AuthenticationManager 其中可以包含多個(gè)AuthenticationProvider
  • ProviderManager對(duì)象為AuthenticationManager接口的實(shí)現(xiàn)類
  • AuthenticationProvider 主要用來進(jìn)行認(rèn)證操作的類 調(diào)用其中的authenticate()方法去進(jìn)行認(rèn)證操作
  • Authentication:Spring Security方式的認(rèn)證主體
  • GrantedAuthority:對(duì)認(rèn)證主題的應(yīng)用層面的授權(quán),含當(dāng)前用戶的權(quán)限信息,通常使用角色表示
  • UserDetails:構(gòu)建Authentication對(duì)象必須的信息,可以自定義,可能需要訪問DB得到
  • UserDetailsService:通過username構(gòu)建UserDetails對(duì)象,通過loadUserByUsername根據(jù)userName獲取UserDetail對(duì)象 (可以在這里基于自身業(yè)務(wù)進(jìn)行自定義的實(shí)現(xiàn)  如通過數(shù)據(jù)庫,xml,緩存獲取等)  

二、SpringBoot 整合Spring Security

1. 項(xiàng)目環(huán)境

(1)JDK版本:1.8

(2)Spring Boot:2.1.2.RELEASE

(3)Spring Security 5.1.3

(4)IntelliJ IDEA 2016.3.4

2. 添加依賴并配置

在pom.xml文件中添加Spring Security的依賴:

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

在application.yml中配置Spring Security的用戶名密碼:

server:
  port: 8082

# spring security
spring:
    security:
        user:
          name: ouyang
          password: 123456

3. 編寫Controller

package com.oycbest.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author: oyc
 * @Date: 2019/1/29 10:49
 * @Description: Hello 測(cè)試控制類
 */
@RestController
public class HelloController {
    @GetMapping("hello")
    public String hello(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return "hello";
    }
}

三、測(cè)試效果

到此這篇關(guān)于SpringBoot+Spring Security基于內(nèi)存用戶認(rèn)證的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Spring Security內(nèi)存用戶認(rèn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java模式匹配之蠻力匹配

    java模式匹配之蠻力匹配

    這篇文章主要介紹了java模式匹配之蠻力匹配的相關(guān)資料和代碼,需要的朋友可以參考下
    2015-05-05
  • 解決PageHelper的上下文問題導(dǎo)致SQL查詢結(jié)果不正確

    解決PageHelper的上下文問題導(dǎo)致SQL查詢結(jié)果不正確

    主要介紹了PageHelper在使用過程中出現(xiàn)的分頁上下文問題,并分析了可能的原因和解決方案,主要解決方案包括每次分頁查詢后調(diào)用`PageHelper.clearPage()`清理分頁上下文,確保每次查詢前正確調(diào)用`startPage`,以及避免在條件判斷未執(zhí)行SQL時(shí)影響后續(xù)查詢
    2024-12-12
  • 使用Netty搭建服務(wù)端和客戶端過程詳解

    使用Netty搭建服務(wù)端和客戶端過程詳解

    這篇文章主要介紹了使用Netty搭建服務(wù)端和客戶端過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Jedis操作Redis數(shù)據(jù)庫的方法

    Jedis操作Redis數(shù)據(jù)庫的方法

    這篇文章主要為大家詳細(xì)介紹了Jedis操作Redis數(shù)據(jù)庫的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • IDEA中如何移除未使用的包

    IDEA中如何移除未使用的包

    這篇文章主要介紹了IDEA中如何移除未使用的包問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解Spring極速集成注解redis實(shí)錄

    詳解Spring極速集成注解redis實(shí)錄

    這篇文章主要介紹了詳解Spring極速集成注解redis實(shí)錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java8新特性:Lambda表達(dá)式之方法引用詳解

    Java8新特性:Lambda表達(dá)式之方法引用詳解

    這篇文章主要給大家介紹了關(guān)于Java8新特性:Lambda表達(dá)式之方法引用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Spring?boot?處理大文件上傳完整代碼

    Spring?boot?處理大文件上傳完整代碼

    這篇文章主要介紹了Spring?boot?處理大文件上傳,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java實(shí)現(xiàn)鎖定某個(gè)變量的幾種方式示例詳解

    Java實(shí)現(xiàn)鎖定某個(gè)變量的幾種方式示例詳解

    這篇文章主要為大家介紹了Java實(shí)現(xiàn)鎖某個(gè)變量的幾種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹詳解

    Java數(shù)據(jù)結(jié)構(gòu)之二叉搜索樹詳解

    二叉搜索樹作為一個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),具有鏈表的快速插入與刪除的特點(diǎn),同時(shí)查詢效率也很優(yōu)秀,所以應(yīng)用十分廣泛。本文將詳細(xì)講講二叉搜索樹的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-06-06

最新評(píng)論