亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Security的持久化用戶和授權(quán)實現(xiàn)方式

 更新時間:2025年02月18日 11:04:58   作者:Exill  
文章介紹了如何使用JdbcUserDetailsManager實現(xiàn)數(shù)據(jù)庫讀取用戶,并展示了如何配置SpringSecurity進(jìn)行授權(quán)管理,通過創(chuàng)建數(shù)據(jù)庫表、配置數(shù)據(jù)庫連接和修改SecurityConfig,實現(xiàn)了用戶權(quán)限的控制

使用JdbcUserDetailsManager(UserDetailsService另一種實現(xiàn))實現(xiàn)數(shù)據(jù)庫讀取用戶

1.引入jdbc和相關(guān)數(shù)據(jù)庫驅(qū)動

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

2.創(chuàng)建數(shù)據(jù)庫表

--用戶表
CREATE TABLE users( 
    username VARCHAR(50)  NOT NULL PRIMARY KEY --用戶名, 
    password VARCHAR(500) NOT NULL             --密碼, 
    enabled  BOOLEAN      NOT NULL             --有效性
);
--權(quán)限表
CREATE TABLE authorities( 
    username  VARCHAR(50) NOT NULL  --用戶名, 
    authority VARCHAR(50) NOT NULL  --權(quán)限, 
    constraint fk FOREIGN KEY(username) REFERENCES users(username)
);
CREATE unique index ix_auth_username ON authorities (username, authority);

3.配置數(shù)據(jù)庫連接(application.yml)

spring:
    datasource:
        driver-class-name: org.postgresql.Driver
        url: jdbc:postgresql://localhost:5432/security
        username:postgres
        password: postgres

4.修改SecurityConfig配置

@Configuration
public class SecurityConfig {
    //配置Security過濾鏈
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        //配置哪些接口需要認(rèn)證(.anyRequest().authenticated()代表任何請求都需認(rèn)證)
        http.authorizeHttpRequests(authorize -> {
            authorize.anyRequest().authenticated();
        });
        //配置post表單請求/login接口
        http.formLogin(Customizer.withDefaults());
        //csrf攻擊:開發(fā)環(huán)境可不配方便調(diào)試,上線環(huán)境需配置,否則會遭csrf攻擊
        http.csrf(AbstractHttpConfigurer::disable);
        //返回Security過濾鏈對象
        return http.build();
    }

    @Bean //配置JdbcUserDetailsManager實現(xiàn)數(shù)據(jù)庫存儲用戶
    public UserDetailsService userDetailsService(DataSource dataSource) {
        return new JdbcUserDetailsManager(dataSource);
    }
}

實現(xiàn)Spring Security授權(quán)功能

1.創(chuàng)建接口

@RestController
public class HelloController{

    @RequestMapping("/hello")
    public String hello() { 
        return "Hello Security"; 
    }

    @RequestMapping("/hello1")
    public String hello1() { 
        return "Hello Security1"; 
    }

}

2.配置數(shù)據(jù)庫賬號和權(quán)限(DbUser用戶擁有hello和hello1權(quán)限、DbUser1只擁有hello1權(quán)限)

3.修改SecurityConfig配置

@Configuration
public class SecurityConfig {
    //配置Security過濾鏈
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        //配置哪些接口需要認(rèn)證(.anyRequest().authenticated()代表任何請求都需認(rèn)證)
        http.authorizeHttpRequests(authorize -> {
            authorize.requestMatchers("/hello").hasAuthority("hello");
            authorize.requestMatchers("/hello1").hasAuthority("hello1");
            authorize.anyRequest().authenticated();
        });
        //配置post表單請求/login接口
        http.formLogin(Customizer.withDefaults());
        //csrf攻擊:開發(fā)環(huán)境可不配方便調(diào)試,上線環(huán)境需配置,否則會遭csrf攻擊
        http.csrf(AbstractHttpConfigurer::disable);
        //返回Security過濾鏈對象
        return http.build();
    }

    @Bean //配置JdbcUserDetailsManager實現(xiàn)數(shù)據(jù)庫存儲用戶
    public UserDetailsService userDetailsService(DataSource dataSource) {
        return new JdbcUserDetailsManager(dataSource);
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java IO學(xué)習(xí)之緩沖輸入流(BufferedInputStream)

    Java IO學(xué)習(xí)之緩沖輸入流(BufferedInputStream)

    這篇文章主要介紹了Java IO學(xué)習(xí)之緩沖輸入流(BufferedInputStream)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java 多線程與并發(fā)之volatile詳解分析

    java 多線程與并發(fā)之volatile詳解分析

    volatile這個關(guān)鍵字可能很多朋友都聽說過,或許也都用過。在Java 5之前,它是一個備受爭議的關(guān)鍵字,因為在程序中使用它往往會導(dǎo)致出人意料的結(jié)果。在Java 5之后,volatile關(guān)鍵字才得以重獲生機(jī)
    2021-11-11
  • Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決

    Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決

    這篇文章主要介紹了Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解決springboot利用ConfigurationProperties注解配置數(shù)據(jù)源無法讀取配置信息問題

    解決springboot利用ConfigurationProperties注解配置數(shù)據(jù)源無法讀取配置信息問題

    今天在學(xué)習(xí)springboot利用ConfigurationProperties注解配置數(shù)據(jù)源的使用遇到一個問題無法讀取配置信息,發(fā)現(xiàn)全部為null,糾結(jié)是哪里出了問題呢,今天一番思考,問題根源找到,下面把我的解決方案分享到腳本之家平臺,感興趣的朋友一起看看吧
    2021-05-05
  • Spring IoC容器常見獲取Bean的方式匯總示例解析

    Spring IoC容器常見獲取Bean的方式匯總示例解析

    這篇文章主要為大家介紹了Spring IoC容器常見獲取Bean的方式匯總示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 如何調(diào)試報表插件

    如何調(diào)試報表插件

    在項目開發(fā)過程中插件調(diào)試非常的麻煩,需要修改里面的代碼,編譯出class,需要重新打包插件。然后把之前的刪除,重新安裝最新的。調(diào)試過程比較繁瑣,而且不能調(diào)試,十分的不方便,這篇文章主要介紹的是調(diào)試報表插件的方法,需要的朋友可以參考下
    2015-07-07
  • Java實現(xiàn)小型圖書館管理系統(tǒng)

    Java實現(xiàn)小型圖書館管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)小型圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 詳解Java的位操作符

    詳解Java的位操作符

    位操作就是對這些數(shù)據(jù)進(jìn)行基本的操作。如果基本類型是char、byte或者short類型的數(shù)值進(jìn)行移位處理,那么會轉(zhuǎn)化成int類型,再進(jìn)行移位的處理
    2017-09-09
  • java字符串求并集的方法

    java字符串求并集的方法

    這篇文章主要介紹了java字符串求并集的方法,涉及Java字符串操作中union方法的使用,是Java字符串操作中非常實用的基本技巧,需要的朋友可以參考下
    2014-11-11
  • Java變量命名規(guī)則詳解及常見命名錯誤(建議收藏)

    Java變量命名規(guī)則詳解及常見命名錯誤(建議收藏)

    這篇文章主要介紹了Java中變量命名的規(guī)則及最佳實踐,包括有效字符、大小寫敏感性、不能使用保留字、駝峰命名法、描述性命名、特定類型的命名習(xí)慣、避免潛在問題、常見命名錯誤及如何避免等內(nèi)容,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02

最新評論