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

Spring Security @PreAuthorize注解分析

 更新時(shí)間:2024年11月25日 09:52:12   作者:瘋一樣的碼農(nóng)  
本教程介紹了如何使用 Spring 方法級(jí)安全和 @PreAuthorize 注解來(lái)保護(hù) RestController 方法,通過(guò)這些步驟,您可以確保只有具有適當(dāng)角色或權(quán)限的用戶才能訪問(wèn)特定的 REST API,感興趣的朋友跟隨小編一起看看吧

@PreAuthorize 注解在 Spring Security 中提供了一種聲明式的方法,可以在您的 Spring Boot 應(yīng)用中添加方法級(jí)別的安全檢查。本教程將引導(dǎo)您設(shè)置并有效使用 @PreAuthorize,確保用戶只能在具有特定角色或權(quán)限的情況下調(diào)用 REST API。

什么是 @PreAuthorize?

@PreAuthorize 是 Spring Security 的一個(gè)注解,用于指定在方法調(diào)用前應(yīng)評(píng)估的表達(dá)式,以確定調(diào)用者是否有權(quán)執(zhí)行該方法。

將 Spring Security 添加到項(xiàng)目中

確保您的項(xiàng)目中包含 Spring Security。對(duì)于 Maven,將以下依賴項(xiàng)添加到 pom.xml 文件中:

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

對(duì)于 Gradle,將以下內(nèi)容添加到 build.gradle 文件中:

implementation 'org.springframework.boot:spring-boot-starter-security'

啟用方法級(jí)安全

要在 Spring Boot 應(yīng)用的 Rest Controller 類中對(duì)特定方法應(yīng)用 Spring Security,必須啟用方法級(jí)安全。為此,您需要使用 @EnableMethodSecurity 注解。

@Configuration
@EnableMethodSecurity
public class SpringSecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.csrf(csrf -> csrf.disable())
            .authorizeHttpRequests(authorize -> authorize
                .requestMatchers(HttpMethod.GET, "/api/user").hasRole("USER")
                .requestMatchers(HttpMethod.GET, "/api/admin").hasRole("ADMIN")
                .anyRequest().authenticated()
            )
            .httpBasic(Customizer.withDefaults());
        return http.build();
    }
    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails ramesh = User.builder()
            .username("ramesh")
            .password(passwordEncoder().encode("password"))
            .roles("USER")
            .build();
        UserDetails admin = User.builder()
            .username("admin")
            .password(passwordEncoder().encode("admin"))
            .roles("ADMIN")
            .build();
        return new InMemoryUserDetailsManager(ramesh, admin);
    }
}

@EnableMethodSecurity 是一個(gè) Spring 注解,用于在 Spring 應(yīng)用中啟用方法級(jí)安全。使用此注解后,Spring 將為包含安全方法的類創(chuàng)建代理,并在調(diào)用這些方法時(shí)攔截以檢查調(diào)用者是否具有執(zhí)行方法所需的權(quán)限。

此注解與其他注解(如 @PreAuthorize、@PostAuthorize、@Secured@RolesAllowed)一起工作,這些注解用于指定方法的訪問(wèn)控制規(guī)則。例如,您可以使用 @PreAuthorize 指定只有具有特定角色或權(quán)限的用戶才能調(diào)用某個(gè)方法;或者使用 @PostAuthorize 指定方法只返回調(diào)用者有權(quán)查看的數(shù)據(jù)。

使用 @PreAuthorize 注解保護(hù) REST API

以下代碼展示了如何使用 Spring Security 進(jìn)行基于角色的 RESTful 端點(diǎn)授權(quán)。

@RestController
@RequestMapping("/api/")
public class AdminController {
    @PreAuthorize("hasRole('ADMIN')")
    @GetMapping("/admin")
    public ResponseEntity<String> helloAdmin() {
        return ResponseEntity.ok("Hello Admin");
    }
    @PreAuthorize("hasRole('USER')")
    @GetMapping("/user")
    public ResponseEntity<String> helloUser() {
        return ResponseEntity.ok("Hello User");
    }
}
  • @PreAuthorize("hasRole('ADMIN')"): 應(yīng)用于 helloAdmin() 方法,表示只有具有 ‘ADMIN’ 角色的用戶才能訪問(wèn)此端點(diǎn)。
  • @PreAuthorize("hasRole('USER')"): 應(yīng)用于 helloUser() 方法,限制只有具有 ‘USER’ 角色的用戶才能訪問(wèn)。

總結(jié)

本教程介紹了如何使用 Spring 方法級(jí)安全和 @PreAuthorize 注解來(lái)保護(hù) RestController 方法。通過(guò)這些步驟,您可以確保只有具有適當(dāng)角色或權(quán)限的用戶才能訪問(wèn)特定的 REST API。

到此這篇關(guān)于Spring Security @PreAuthorize注解分析的文章就介紹到這了,更多相關(guān)Spring Security @PreAuthorize內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中實(shí)現(xiàn)線程的創(chuàng)建和啟動(dòng)的方法

    Java中實(shí)現(xiàn)線程的創(chuàng)建和啟動(dòng)的方法

    在 Java 中,實(shí)現(xiàn)線程的創(chuàng)建和啟動(dòng)是兩個(gè)不同但緊密相關(guān)的概念,理解為什么要啟動(dòng)線程(調(diào)用 start() 方法)而非直接調(diào)用 run() 方法,是掌握多線程編程的關(guān)鍵,本文給大家詳細(xì)介紹了Java線程創(chuàng)建和啟動(dòng)的方法,需要的朋友可以參考下
    2025-06-06
  • SpringBoot使用admin+actuator實(shí)現(xiàn)日志可視化的方法

    SpringBoot使用admin+actuator實(shí)現(xiàn)日志可視化的方法

    如何在SpringBoot中使用Admin和Actuator實(shí)現(xiàn)日志可視化,需配置pom依賴、yml參數(shù)及l(fā)ogback路徑,確保兩者一致,啟動(dòng)服務(wù)后通過(guò)指定端口訪問(wèn)日志界面,并檢查404錯(cuò)誤原因,感興趣的朋友一起看看吧
    2025-06-06
  • Springboot使用異步方法優(yōu)化Service邏輯,提高接口響應(yīng)速度方式

    Springboot使用異步方法優(yōu)化Service邏輯,提高接口響應(yīng)速度方式

    這篇文章主要介紹了Springboot使用異步方法優(yōu)化Service邏輯,提高接口響應(yīng)速度方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java中JavaBean對(duì)象和Map的互相轉(zhuǎn)換方法實(shí)例

    Java中JavaBean對(duì)象和Map的互相轉(zhuǎn)換方法實(shí)例

    為什么需要將javaBean和map進(jìn)行轉(zhuǎn)換,在很多應(yīng)用場(chǎng)景中,需要將key=value形式的數(shù)據(jù)與javaBean對(duì)象相互轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Java中JavaBean對(duì)象和Map的互相轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Spring配置文件無(wú)法讀取properties屬性的解決

    Spring配置文件無(wú)法讀取properties屬性的解決

    這篇文章主要介紹了Spring配置文件無(wú)法讀取properties屬性的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 在Android的應(yīng)用中實(shí)現(xiàn)網(wǎng)絡(luò)圖片異步加載的方法

    在Android的應(yīng)用中實(shí)現(xiàn)網(wǎng)絡(luò)圖片異步加載的方法

    這篇文章主要介紹了在Android的應(yīng)用中實(shí)現(xiàn)網(wǎng)絡(luò)圖片異步加載的方法,一定程度上有助于提高安卓程序的使用體驗(yàn),需要的朋友可以參考下
    2015-07-07
  • Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間代碼示例

    Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間代碼示例

    這篇文章主要給大家介紹了關(guān)于使用Java判斷一個(gè)時(shí)間是否在當(dāng)前時(shí)間區(qū)間的相關(guān)資料,在日常開(kāi)發(fā)中我們經(jīng)常會(huì)涉及到時(shí)間的大小比較或者是判斷某個(gè)時(shí)間是否在某個(gè)時(shí)間段內(nèi),需要的朋友可以參考下
    2023-07-07
  • Spring的@PreAuthorize注解自定義權(quán)限校驗(yàn)詳解

    Spring的@PreAuthorize注解自定義權(quán)限校驗(yàn)詳解

    這篇文章主要介紹了Spring的@PreAuthorize注解自定義權(quán)限校驗(yàn)詳解,由于項(xiàng)目中,需要對(duì)外開(kāi)放接口,要求做請(qǐng)求頭校驗(yàn),不做其他權(quán)限控制,所以準(zhǔn)備對(duì)開(kāi)放的接口全部放行,不做登錄校驗(yàn),需要的朋友可以參考下
    2023-11-11
  • Java并發(fā)容器相關(guān)知識(shí)總結(jié)

    Java并發(fā)容器相關(guān)知識(shí)總結(jié)

    今天給大家?guī)?lái)的文章是Java并發(fā)容器的相關(guān)知識(shí),文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)Java并發(fā)容器的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • 淺談xml配置spring profiles的幾個(gè)注意點(diǎn)

    淺談xml配置spring profiles的幾個(gè)注意點(diǎn)

    這篇文章主要介紹了淺談xml配置spring profiles的幾個(gè)注意點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論

比如县| 北碚区| 台南市| 桑日县| 昌图县| 铁力市| 鄂伦春自治旗| 平阳县| 剑阁县| 鹤峰县| 广州市| 金华市| 建宁县| 山东省| 罗定市| 德令哈市| 纳雍县| 确山县| 龙江县| 昭觉县| 内黄县| 靖远县| 克拉玛依市| 正镶白旗| 黔西| 澜沧| 友谊县| 新龙县| 安西县| 长岭县| 布拖县| 石渠县| 瓮安县| 宕昌县| 比如县| 西峡县| 长乐市| 东平县| 吴桥县| 云南省| 呼伦贝尔市|