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

SpringBoot?SpringSecurity?詳細(xì)介紹(基于內(nèi)存的驗證)

 更新時間:2023年04月28日 10:11:26   作者:VipSoft  
這篇文章主要介紹了SpringBoot?SpringSecurity?介紹(基于內(nèi)存的驗證),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

SpringBoot 集成 SpringSecurity + MySQL + JWT 附源碼,廢話不多直接盤
SpringBoot已經(jīng)為用戶采用默認(rèn)配置,只需要引入pom依賴就能快速啟動Spring Security。
目的:驗證請求用戶的身份,提供安全訪問
優(yōu)勢:基于Spring,配置方便,減少大量代碼

內(nèi)置訪問控制方法

  • permitAll() 表示所匹配的 URL 任何人都允許訪問。
  • authenticated() 表示所匹配的 URL 都需要被認(rèn)證才能訪問。
  • anonymous() 表示可以匿名訪問匹配的 URL 。和 permitAll() 效果類似,只是設(shè)置為 anonymous() 的 url 會執(zhí)行 filter 鏈中
  • denyAll() 表示所匹配的 URL 都不允許被訪問。
  • rememberMe() 被“remember me”的用戶允許訪問 這個有點類似于很多網(wǎng)站的十天內(nèi)免登錄,登陸一次即可記住你,然后未來一段時間不用登錄。
  • fullyAuthenticated() 如果用戶不是被 remember me 的,才可以訪問。也就是必須一步一步按部就班的登錄才行。

角色權(quán)限判斷

  • hasAuthority(String) 判斷用戶是否具有特定的權(quán)限,用戶的權(quán)限是在自定義登錄邏輯
  • hasAnyAuthority(String ...) 如果用戶具備給定權(quán)限中某一個,就允許訪問
  • hasRole(String) 如果用戶具備給定角色就允許訪問。否則出現(xiàn) 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 默認(rèn)用戶名為: user

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

配置 Spring Security (入門)

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

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

配置用戶身份的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();
        //簡化操作,將用戶名和密碼存在內(nèi)存中,后期會存放在數(shù)據(jù)庫、Redis中
        auth.inMemoryAuthentication()
                .passwordEncoder(passwordEncoder)
                .withUser("admin")
                .password(passwordEncoder.encode("888"))
                .roles("ADMIN")
                .and()
                .withUser("user")
                .password(passwordEncoder.encode("666"))
                .roles("USER");
    }
    /**
     * 配置用戶權(quán)限的configure()方法
     * @param http
     * @throws Exception
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                //配置攔截的路徑、配置哪類角色可以訪問該路徑
                .antMatchers("/user").hasAnyRole("USER")
                .antMatchers("/*").hasAnyRole("ADMIN")
                //配置登錄界面,可以添加自定義界面, 沒添加則用系統(tǒng)默認(rèn)的界面
                .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";
    }
} 

到此這篇關(guān)于SpringBoot SpringSecurity 介紹(基于內(nèi)存的驗證)的文章就介紹到這了,更多相關(guān)SpringBoot SpringSecurity內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 調(diào)用本地?fù)P聲器的步驟

    java 調(diào)用本地?fù)P聲器的步驟

    博主的畢設(shè)系統(tǒng)在做一個餐廳的點餐管理系統(tǒng),在進行移動端頁面開發(fā)的時候突發(fā)奇想做一個呼叫功能,因此就有了這篇文章
    2021-05-05
  • SpringBoot使用minio及配置代碼

    SpringBoot使用minio及配置代碼

    MinIO是一個非常輕量的服務(wù),可以很簡單的和其他應(yīng)用的結(jié)合,類似?NodeJS,?Redis?或者?MySQL。本文重點給大家介紹SpringBoot使用minio及配置代碼,感興趣的朋友一起看看吧
    2022-02-02
  • 詳解mybatis collection標(biāo)簽一對多的使用

    詳解mybatis collection標(biāo)簽一對多的使用

    這篇文章主要介紹了mybatis collection標(biāo)簽一對多的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • java 字符串分割的三種方法(總結(jié))

    java 字符串分割的三種方法(總結(jié))

    下面小編就為大家?guī)硪黄猨ava 字符串分割的三種方法(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Spring Boot JPA Repository之existsBy查詢方法失效的解決

    Spring Boot JPA Repository之existsBy查詢方法失效的解決

    這篇文章主要介紹了Spring Boot JPA Repository之existsBy查詢方法失效的解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring Boot整合Spring Security簡單實現(xiàn)登入登出從零搭建教程

    Spring Boot整合Spring Security簡單實現(xiàn)登入登出從零搭建教程

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合Spring Security簡單實現(xiàn)登入登出從零搭建的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-09-09
  • 詳解SpringBoot之添加單元測試

    詳解SpringBoot之添加單元測試

    本篇文章主要介紹了詳解SpringBoot之添加單元測試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法

    java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法

    Java語言的Calendar(日歷),Date(日期),和DateFormat(日期格式)組成了Java標(biāo)準(zhǔn)的一個基本但是非常重要的部分,下面這篇文章主要給大家介紹了關(guān)于java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 簡單實現(xiàn)java上傳圖片文件功能

    簡單實現(xiàn)java上傳圖片文件功能

    這篇文章主要教大家如何簡單實現(xiàn)java上傳圖片文件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java發(fā)送javax.mail郵件實例講解

    java發(fā)送javax.mail郵件實例講解

    這篇文章主要為大家介紹了java發(fā)送javax.mail郵件實例講解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評論

红原县| 朝阳区| 华阴市| 兴城市| 长乐市| 普陀区| 安康市| 潼南县| 卫辉市| 谢通门县| 墨脱县| 江安县| 天气| 崇礼县| 龙游县| 宜城市| 壤塘县| 井陉县| 东光县| 镶黄旗| 温宿县| 玛曲县| 曲阳县| 凤城市| 年辖:市辖区| 荔浦县| 治县。| 临江市| 平顺县| 嵩明县| 汉源县| 鹤峰县| 正定县| 贵定县| 汝阳县| 叶城县| 宜黄县| 汽车| 乌什县| 万年县| 左贡县|