91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot?SpringSecurity怎么使用

發布時間:2023-04-28 11:10:59 來源:億速云 閱讀:291 作者:iii 欄目:開發技術

這篇文章主要介紹了SpringBoot SpringSecurity怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringBoot SpringSecurity怎么使用文章都會有所收獲,下面我們一起來看看吧。

SpringBoot已經為用戶采用默認配置,只需要引入pom依賴就能快速啟動Spring Security。
目的:驗證請求用戶的身份,提供安全訪問
優勢:基于Spring,配置方便,減少大量代碼

SpringBoot?SpringSecurity怎么使用

內置訪問控制方法

  • permitAll() 表示所匹配的 URL 任何人都允許訪問。

  • authenticated() 表示所匹配的 URL 都需要被認證才能訪問。

  • anonymous() 表示可以匿名訪問匹配的 URL 。和 permitAll() 效果類似,只是設置為 anonymous() 的 url 會執行 filter 鏈中

  • denyAll() 表示所匹配的 URL 都不允許被訪問。

  • rememberMe() 被“remember me”的用戶允許訪問 這個有點類似于很多網站的十天內免登錄,登陸一次即可記住你,然后未來一段時間不用登錄。

  • fullyAuthenticated() 如果用戶不是被 remember me 的,才可以訪問。也就是必須一步一步按部就班的登錄才行。

角色權限判斷

  • hasAuthority(String) 判斷用戶是否具有特定的權限,用戶的權限是在自定義登錄邏輯

  • hasAnyAuthority(String ...) 如果用戶具備給定權限中某一個,就允許訪問

  • hasRole(String) 如果用戶具備給定角色就允許訪問。否則出現 403

  • hasAnyRole(String ...) 如果用戶具備給定角色的任意一個,就允許被訪問

  • hasIpAddress(String) 如果請求是指定的 IP 就運行訪問。可以通過 request.getRemoteAddr() 獲取 ip 地址

引用 Spring Security

Pom 文件中添加

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>vipsoft-parent</artifactId>
        <groupId>com.vipsoft.boot</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>vipsoft-security</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

運行后會自動生成 password 默認用戶名為: user

SpringBoot?SpringSecurity怎么使用

默認配置每次都啟動項目都會重新生成密碼,同時用戶名和攔截請求也不能自定義,在實際應用中往往需要自定義配置,因此接下來對Spring Security進行自定義配置。

配置 Spring Security (入門)

在內存中(簡化環節,了解邏輯)配置兩個用戶角色(admin和user),設置不同密碼;
同時設置角色訪問權限,其中admin可以訪問所有路徑(即/*),user只能訪問/user下的所有路徑。

自定義配置類,實現WebSecurityConfigurerAdapter接口,WebSecurityConfigurerAdapter接口中有兩個用到的 configure()方法,其中一個配置用戶身份,另一個配置用戶權限:

配置用戶身份的configure()方法:

SecurityConfig

package com.vipsoft.web.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    /**
     * 配置用戶身份的configure()方法
     *
     * @param auth
     * @throws Exception
     */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        //簡化操作,將用戶名和密碼存在內存中,后期會存放在數據庫、Redis中
        auth.inMemoryAuthentication()
                .passwordEncoder(passwordEncoder)
                .withUser("admin")
                .password(passwordEncoder.encode("888"))
                .roles("ADMIN")
                .and()
                .withUser("user")
                .password(passwordEncoder.encode("666"))
                .roles("USER");
    }
    /**
     * 配置用戶權限的configure()方法
     * @param http
     * @throws Exception
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                //配置攔截的路徑、配置哪類角色可以訪問該路徑
                .antMatchers("/user").hasAnyRole("USER")
                .antMatchers("/*").hasAnyRole("ADMIN")
                //配置登錄界面,可以添加自定義界面, 沒添加則用系統默認的界面
                .and().formLogin();
    }
}

添加接口測試用

package com.vipsoft.web.controller;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DefaultController {
    @GetMapping("/")
    @PreAuthorize("hasRole('ADMIN')")
    public String demo() {
        return "Welcome";
    }
    @GetMapping("/user/list")
    @PreAuthorize("hasAnyRole('ADMIN','USER')")
    public String getUserList() {
        return "User List";
    }
    @GetMapping("/article/list")
    @PreAuthorize("hasRole('ADMIN')")
    public String getArticleList() {
        return "Article List";
    }
}

SpringBoot?SpringSecurity怎么使用

關于“SpringBoot SpringSecurity怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SpringBoot SpringSecurity怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉川市| 民县| 屯门区| 洪泽县| 潜江市| 连平县| 巢湖市| 修水县| 义乌市| 鄄城县| 新巴尔虎左旗| 景泰县| 察雅县| 桐乡市| 同心县| 昂仁县| 梨树县| 措美县| 中山市| 西吉县| 镇沅| 安溪县| 西宁市| 邹城市| 静海县| 兴国县| 贡嘎县| 商南县| 读书| 阿合奇县| 锦州市| 垣曲县| 阿巴嘎旗| 凉城县| 前郭尔| 海城市| 翼城县| 太原市| 高台县| 汝南县| 枞阳县|