国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

上文說(shuō)到,Spring Security它是一個(gè)強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問(wèn)控制框架。它提供了一套豐富的功能,用于保護(hù)基于Spring的應(yīng)用程序。

上文又說(shuō)到,在Spring Security中,過(guò)濾器(Filter)是一個(gè)重要的組件,用于處理身份驗(yàn)證、授權(quán)和其他安全相關(guān)的任務(wù)。

【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn),云原生系列--微服務(wù),spring,springcloud,微服務(wù),安全架構(gòu)

Spring Security 過(guò)濾器概述

Spring Security 的過(guò)濾器鏈由多個(gè)過(guò)濾器組成,每個(gè)過(guò)濾器負(fù)責(zé)處理特定的安全任務(wù)。當(dāng)請(qǐng)求到達(dá)應(yīng)用程序時(shí),它會(huì)依次通過(guò)過(guò)濾器鏈中的每個(gè)過(guò)濾器,直到到達(dá)目標(biāo)資源。

在過(guò)濾器鏈中,每個(gè)過(guò)濾器都可以對(duì)請(qǐng)求進(jìn)行攔截、修改或執(zhí)行其他操作,以確保應(yīng)用程序的安全性。

【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn),云原生系列--微服務(wù),spring,springcloud,微服務(wù),安全架構(gòu)

Spring Security 主要過(guò)濾器介紹

這里先列舉一些Spring Security中常用的過(guò)濾器:

  • SecurityContextPersistenceFilter:負(fù)責(zé)將安全上下文存儲(chǔ)在HttpSession中,以便在后續(xù)請(qǐng)求中訪問(wèn)。
  • UsernamePasswordAuthenticationFilter:處理基于表單的身份驗(yàn)證。它攔截包含用戶名和密碼的請(qǐng)求,并執(zhí)行身份驗(yàn)證過(guò)程。
  • LogoutFilter:處理注銷請(qǐng)求,清除安全上下文和會(huì)話數(shù)據(jù)。
  • ExceptionTranslationFilter:捕獲并處理認(rèn)證和授權(quán)過(guò)程中發(fā)生的異常。
  • FilterSecurityInterceptor:根據(jù)安全配置決定是否允許訪問(wèn)特定的資源。

更詳細(xì)的請(qǐng)看下圖:

【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn),云原生系列--微服務(wù),spring,springcloud,微服務(wù),安全架構(gòu)

基于JDBC的認(rèn)證實(shí)現(xiàn)

基于JDBC的認(rèn)證是指使用關(guān)系型數(shù)據(jù)庫(kù)(如MySQL、Oracle等)存儲(chǔ)用戶憑據(jù)(用戶名和密碼),并通過(guò)JDBC進(jìn)行身份驗(yàn)證的過(guò)程。

如何實(shí)現(xiàn)基于JDBC的認(rèn)證呢,接下來(lái)我們以一個(gè)課設(shè)作栗子來(lái)學(xué)習(xí)一下!

【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn),云原生系列--微服務(wù),spring,springcloud,微服務(wù),安全架構(gòu)

首先,我們需要在Spring配置中配置數(shù)據(jù)源,以便能夠連接到我們的數(shù)據(jù)庫(kù)。

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>  
    <property name="url" value="jdbc:mysql://localhost:3306/xiaowei"/>  
    <property name="username" value="xiaoweiya"/>  
    <property name="password" value="123456"/>  
</bean>

我們的數(shù)據(jù)庫(kù)表,也列到這里吧,雖然語(yǔ)句短小精悍:

CREATE TABLE users (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    username VARCHAR(50) NOT NULL,  
    password VARCHAR(50) NOT NULL  
);

實(shí)現(xiàn)UserDetailsService接口,以便Spring Security能夠查詢數(shù)據(jù)庫(kù)以獲取用戶詳細(xì)信息。在這個(gè)實(shí)現(xiàn)中,我們需要使用JDBC來(lái)查詢用戶表。

@Service  
public class JdbcUserDetailsService implements UserDetailsService {  
    @Autowired  
    private JdbcTemplate jdbcTemplate;  
  
    @Override  
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {  
        String sql = "SELECT id, username, password FROM users WHERE username = ?";  
        User user = jdbcTemplate.queryForObject(sql, new Object[]{username}, new BeanPropertyRowMapper<>(User.class));  
        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), new ArrayList<>());  
    }  
}

最后,配置Spring Security使用我們的UserDetailsService實(shí)現(xiàn)和JDBC數(shù)據(jù)源。在配置中,我們需要啟用基于表單的身份驗(yàn)證,并設(shè)置安全約束。

@Configuration  
@EnableWebSecurity  
public class SecurityConfig extends WebSecurityConfigurerAdapter {  
    @Autowired  
    private JdbcUserDetailsService userDetailsService;  
  
    @Override  
    protected void configure(HttpSecurity http) throws Exception {  
        http  
            .authorizeRequests()  
                .antMatchers("/login").permitAll()  
                .anyRequest().authenticated()  
                .and()  
            .formLogin()  
                .loginPage("/login")  
                .permitAll()  
                .and()  
            .logout()  
                .permitAll();  
    }  
  
    @Override  
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {  
        auth.userDetailsService(userDetailsService);  
        auth.passwordEncoder(passwordEncoder());  
    }  
  
    @Bean  
    public PasswordEncoder passwordEncoder() {  
        return new BCryptPasswordEncoder();  
    }  
}

在最后的代碼中,我們用到了BCrypt,它是一款加密工具,可以比較方便地實(shí)現(xiàn)數(shù)據(jù)的加密工作。也可以簡(jiǎn)單理解為它內(nèi)部自己實(shí)現(xiàn)了隨機(jī)加鹽處理。那它和MD5加密有什么區(qū)別呢?

使用MD5加密,每次加密后的密文其實(shí)都是一樣的,這樣就方便了MD5通過(guò)大數(shù)據(jù)的方式進(jìn)行破解。

BCrypt生成的密文長(zhǎng)度是60,而MD5的長(zhǎng)度是32。

現(xiàn)在,我們啟動(dòng)項(xiàng)目,當(dāng)用戶嘗試登錄時(shí),Spring Security將調(diào)用我們提供的JdbcUserDetailsService實(shí)現(xiàn)來(lái)驗(yàn)證用戶憑據(jù)。這個(gè)實(shí)現(xiàn)使用JDBC從數(shù)據(jù)庫(kù)中查詢用戶信息,并且返回給Spring Security進(jìn)行驗(yàn)證。如果用戶名和密碼匹配,用戶將被成功認(rèn)證,并獲得訪問(wèn)應(yīng)用程序的權(quán)限。

文章到這里就先結(jié)束了,后續(xù)會(huì)繼續(xù)分享相關(guān)的知識(shí)點(diǎn)。

【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn),云原生系列--微服務(wù),spring,springcloud,微服務(wù),安全架構(gòu)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-855634.html

到了這里,關(guān)于【Spring Security系列】Spring Security 過(guò)濾器詳解與基于JDBC的認(rèn)證實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Spring Boot系列】-Spring Boot過(guò)濾器Filter

    【Spring Boot系列】-Spring Boot過(guò)濾器Filter

    **Filter(過(guò)濾器) 可以理解為經(jīng)過(guò)一層次的過(guò)濾處理才達(dá)到使用的要求,而其實(shí) Filter(過(guò)濾器) 就是服務(wù)器與客戶端請(qǐng)求與響應(yīng)的中間層組件,在實(shí)際項(xiàng)目開(kāi)發(fā)中 Filter(過(guò)濾器)**主要用于對(duì)瀏覽器的請(qǐng)求進(jìn)行過(guò)濾處理,將過(guò)濾后的請(qǐng)求再轉(zhuǎn)給下一個(gè)資源。 **Filter(過(guò)濾器

    2024年02月13日
    瀏覽(65)
  • Spring Cloud Gateway 過(guò)濾器詳解

    Spring Cloud Gateway 過(guò)濾器詳解

    Spring Cloud Gateway根據(jù)作用范圍劃分為:GatewayFilter和GlobalFilter 由filter工作流程點(diǎn),可以知道filter有著非常重要的作用,在“pre”類型的過(guò)濾器可以做參數(shù)校驗(yàn)、權(quán)限校驗(yàn)、流量監(jiān)控、日志輸出、協(xié)議轉(zhuǎn)換等,在“post”類型的過(guò)濾器中可以做響應(yīng)內(nèi)容、響應(yīng)頭的修改,日志的輸

    2023年04月08日
    瀏覽(24)
  • Spring Cloud Gateway過(guò)濾器GlobalFilter詳解

    Spring Cloud Gateway過(guò)濾器GlobalFilter詳解

    一、過(guò)濾器的場(chǎng)景 在springCloud架構(gòu)中,網(wǎng)關(guān)是必不可少的組件,它用于服務(wù)路由的轉(zhuǎn)發(fā)。對(duì)客戶端進(jìn)行屏蔽微服務(wù)的具體細(xì)節(jié),客戶端只需要和網(wǎng)關(guān)進(jìn)行交互。所以網(wǎng)關(guān)顧名思義,就是網(wǎng)絡(luò)的一個(gè)關(guān)卡。它就是一座城的城門(mén)守衛(wèi)。所以這個(gè)守衛(wèi)就可以做很多工作,比如對(duì)來(lái)訪

    2024年02月14日
    瀏覽(15)
  • Spring Cloud Gateway GlobalFilter(全局過(guò)濾器)詳解(官方原版)

    GlobalFilter接口具有與GatewayFilter相同的簽名。這些是有條件地應(yīng)用于所有路由的特殊過(guò)濾器。 當(dāng)請(qǐng)求與路由匹配時(shí),過(guò)濾web處理程序會(huì)將GlobalFilter的所有實(shí)例和GatewayFilter的所有路由特定實(shí)例添加到過(guò)濾器鏈中。這個(gè)組合過(guò)濾器鏈由org.springframework.core.Ordered接口排序,您可以通

    2024年02月09日
    瀏覽(16)
  • 【Spring】Springboot過(guò)濾器Filter和攔截器Inteceptor詳解及使用場(chǎng)景

    Springboot過(guò)濾器Filter和攔截器Inteceptor詳解及使用場(chǎng)景

    2024年02月13日
    瀏覽(35)
  • spring boot過(guò)濾器實(shí)現(xiàn)項(xiàng)目?jī)?nèi)接口過(guò)濾

    spring boot過(guò)濾器實(shí)現(xiàn)項(xiàng)目?jī)?nèi)接口過(guò)濾

    由于業(yè)務(wù)需求,存在兩套項(xiàng)目,一套是路由中心,一套是業(yè)務(wù)系統(tǒng). 現(xiàn)在存在問(wèn)題是,路由中心集成了微信公眾號(hào)與小程序模塊功能,業(yè)務(wù)系統(tǒng)部署了多套服務(wù). 現(xiàn)在需要通過(guò)調(diào)用路由中心將接口重新路由到指定的業(yè)務(wù)系統(tǒng)中 將小程序,公眾號(hào)用戶信息與業(yè)務(wù)系統(tǒng)做綁定 將路由中心的

    2023年04月20日
    瀏覽(24)
  • Spring Cloud Gateway 過(guò)濾器

    Spring Cloud Gateway 過(guò)濾器

    Spring Cloud Gateway 過(guò)濾器的種類有30多種。 官文文檔地址: Spring Cloud Gateway https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gatewayfilter-factories Spring Cloud Gateway大體可以分為下面兩種類型的過(guò)濾器: 1、內(nèi)置的過(guò)濾器 ? ? ? ? 1.1、內(nèi)置的局部過(guò)濾器 ? ? ? ? 1.2、內(nèi)置的全

    2024年03月28日
    瀏覽(21)
  • Spring boot 中的過(guò)濾器

    `javax.servlet.Filter`接口定義了幾個(gè)方法: 其中一些經(jīng)常在過(guò)濾器的實(shí)現(xiàn)中使用。以下是常用的幾個(gè)方法: 1. `doFilter()`: 這是過(guò)濾器的核心方法,用于實(shí)現(xiàn)過(guò)濾器的邏輯。在該方法中,您可以對(duì)請(qǐng)求進(jìn)行預(yù)處理、修改請(qǐng)求參數(shù)、驗(yàn)證身份、記錄日志等操作,然后通過(guò)調(diào)用`Filter

    2024年02月12日
    瀏覽(29)
  • Spring Cloud GateWay 全局過(guò)濾器

    這是一個(gè)自定義的 Spring Cloud Gateway 全局過(guò)濾器(Global Filter)。在 Spring Cloud Gateway 中,全局過(guò)濾器可以在請(qǐng)求被路由到目標(biāo)服務(wù)之前或之后執(zhí)行一些操作。這個(gè)過(guò)濾器實(shí)現(xiàn)了 GlobalFilter 接口和 Ordered 接口,這兩個(gè)接口的作用如下: GlobalFilter 接口: 這是一個(gè) Spring Cloud Gateway 提

    2024年02月11日
    瀏覽(20)
  • 【Spring Cloud】深入探索統(tǒng)一網(wǎng)關(guān) Gateway 的搭建,斷言工廠,過(guò)濾器工廠,全局過(guò)濾器以及跨域問(wèn)題

    【Spring Cloud】深入探索統(tǒng)一網(wǎng)關(guān) Gateway 的搭建,斷言工廠,過(guò)濾器工廠,全局過(guò)濾器以及跨域問(wèn)題

    在微服務(wù)架構(gòu)中,網(wǎng)關(guān)是至關(guān)重要的組件,具有多重職責(zé),為整個(gè)系統(tǒng)提供了一系列關(guān)鍵功能。從下面的微服務(wù)結(jié)構(gòu)圖中,我們可以明確網(wǎng)關(guān)的幾項(xiàng)主要作用: 微服務(wù)結(jié)構(gòu)圖: 請(qǐng)求過(guò)濾與安全: 用戶的所有請(qǐng)求首先經(jīng)過(guò)網(wǎng)關(guān),這使得網(wǎng)關(guān)成為系統(tǒng)的第一道防線。通過(guò)對(duì)傳入

    2024年02月07日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包