10、Springboot整合Security很全

news2024/12/26 10:58:46

1.什么是Security

SpringSecurity是基于Spring AOP和Servlet过滤器的安全框架。

它提供全面的安全性解决方案,同时在Web 请求级和方法调用级处理身份确认和授权。

2.Spring Security核心功能?

(1)认证(你是谁,用户/设备/系统)

(2)验证(你能干什么,也叫权限控制/授权,允许执行的操作)

(3)攻击防护(防止伪造身份)

3.Spring Security原理技术

Filter、Servlet、Spring DI、SpringAOP.

在 Spring Framework 基础上,Spring Security 充分利用了依赖注入(DI,Dependency Injection)和面向切面编程(AOP)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证和授权支持。

4. springboot整合Security(简单版)

1.maven配置

		<!-- 初始化配置 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<version>2.7.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<version>2.7.2</version>
		</dependency>

		<!-- 集成security-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
			<version>2.7.2</version>
		</dependency>

2.yml 配置

  security:
    user:
      name: user
      password: 123456

注意:这个配置如果没有的话,控制台会自动打印下面的密码:默认用户名是user

Using generated security password: 51e13039-b93f-4f91-90fb-58c18f6ff8ea

3.测试

我这里上一篇写了整合swagger,所直接访问了swagger接口:
会自动跳转到:http://localhost:8081/login

在这里插入图片描述
登录进来了:
在这里插入图片描述

5.springboot整合Security(内存版,改吧改吧就成数据库了)

1.maven引用 直接用上边简单版的就行

2.注释掉yml配置的

#  security:
#    user:
#      name: user
#      password: 123456

3.增加WebSecurityConfig 配置类

package com.springboot.test.config.security;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;

/**
 * @author cf
 * @date 2022/12/4 11:44
 * @description
 */
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        /*
         * 配置为从内存中进行加载认证信息.
         * 这里配置了两个用户 admin和user
         */
        auth.inMemoryAuthentication()
                .withUser("admin")
                .password(passwordEncoder().encode("123456"))
                .roles();

        auth.inMemoryAuthentication()
                .withUser("user")
                .password(passwordEncoder().encode("123456"))
                .roles();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }


}

4.测试一下 按照上面的重启 请求接口就好了

6.Security优点

(1)Spring Security基于Spring开发,项目中如果使用Spring作为基础,配合Spring Security做权限更加方便。

(2)Spring Security功能丰富,例如安全防护方面。

(3)Spring Security社区资源相对丰富。

(4)和Spring Boot,Spring Cloud,三者可以无缝集成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java集合容器面试题(2023最新版)

集合容器概述 什么是集合 集合框架&#xff1a;用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容&#xff1a;对外的接口、接口的实现和对集合运算的算法。 接口&#xff1a;表示集合的抽象数据类型。接口…

王洪伟:流体力学与微积分方法求解水池进排水问题

作者 | 王洪伟 北京航空航天大学副教授&#xff0c;仿真秀专栏作者 导 读&#xff1a;经过了几篇略显烧脑的文章后&#xff0c;来一篇轻松一点的&#xff0c;经典的小学数学应用题。 1、问题分析 题&#xff1a;一个水池有一个进水管和一个排水管。只开进水管&#xff0c;2个…

Linux常用命令总结

目录和文件命令 &#xff08;1&#xff09;用户目录&#xff1a;位于/home/user&#xff0c;称之为用户工作目录&#xff1b; &#xff08;2&#xff09;ls&#xff1a;是英文单词list的简写&#xff0c;其功能为列出目录的内容&#xff1b; ls -a 列出隐藏文件&#xff0c;文…

CAS号:67131-52-6, 三肽Ala-Ala-Tyr

H-Ala-Ala-Tyr-OH 用于合成突变型多肽。H-Ala-Ala-Tyr-OH can be synthesized mutant peptides[1][2]. 编号: 193893中文名称: 三肽Ala-Ala-TyrCAS号: 67131-52-6单字母: H2N-AAY-OH三字母: H2N-Ala-Ala-Tyr-COOH氨基酸个数: 3分子式: C15H21N3O5平均分子量: 323.34精确分子量:…

Vue学习:分析hello案例

一个vue实例&#xff0c;接管不了两个容器 和 多个实例&#xff0c;一个容器都不允许 容器实例必须一对一 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" conten…

Nexus存储库管理器搭建-Maven私服

写在前面 &#x1f341;个人主页&#xff1a;微枫Micromaple ✨本期专栏&#xff1a;《0到1项目搭建》欢迎订阅学习~ &#x1f4cc;源码获取&#xff1a;GitCode、GitHub、码云Gitee 持续更新中&#xff0c;别忘了 star 喔~ 在企业开发过程中&#xff0c;就比如说我们Java程序员…

Linux内核中ideapad-laptop.c文件全解析10

接前一篇文章《Linux内核中ideapad-laptop.c文件全解析9》&#xff0c;地址为&#xff1a; Linux内核中ideapad-laptop.c文件全解析9_蓝天居士的博客-CSDN博客 本文针对于上一篇文章提到的配置选项"CONFIG_LEDS_BRIGHTNESS_HW_CHANGED"进行详细分析。在make menuco…

python -- PyQt5(designer)中文详细教程(五)对话框

对话框 对话框是⼀个现代GUI应用不可或缺的⼀部分。对话是两个人之间的交流&#xff0c;对话框就是⼈与电脑之 间的对话。对话框用来输⼊数据&#xff0c;修改数据&#xff0c;修改应用设置等等。 输入文字 QInputDialog 提供了⼀个简单方便的对话框&#xff0c;可以输入字符…

SpringBoot 玩一玩代码混淆,防止反编译代码泄露!

编译 简单就是把代码跑一哈&#xff0c;然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来&#xff0c;可以看到你的代码写的啥。 比较常用的反编译工具 JD-GUI &#xff0c;直接把编译好的jar丢进…

深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别

深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别一、前言二、网络结构二、可解释性三、记忆主线四、遗忘门五、输入门六、输出门七、手写数字识别实战7.1 引入依赖库7.2 加载数据7.3 迭代训练7.4 数据验证八、参考资料一、前言 基本的RNN存在梯度消失和梯度爆炸问题&am…

毕业设计-基于机器视觉的深蹲检测识别-TensorFlow-opencv

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

LeetCode刷题复盘笔记—一文搞懂完全背包之377. 组合总和 Ⅳ问题(动态规划系列第十二篇)

今日主要总结一下动态规划完全背包的一道题目&#xff0c;377. 组合总和 Ⅳ 题目&#xff1a;377. 组合总和 Ⅳ Leetcode题目地址 题目描述&#xff1a; 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的…

[附源码]计算机毕业设计基于web的羽毛球管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python软件编程等级考试一级——20220915

Python软件编程等级考试一级——20220915理论单选题判断题实操第一题第二题理论 单选题 1、表达式len(“学史明理增信 &#xff0c;读史终生受益”) > len(" reading history will benefit you ")的结果是&#xff1f; A、0 B、True C、False D、1 2、表达…

SLMi333国内首款兼容光耦带DESAT保护功能的隔离式栅极驱动器

SLMi333国内首款兼容光耦带DESAT保护功能的隔离式栅极驱动器,内置快速去饱和&#xff08;DESAT&#xff09;故障检测功能&#xff0c;米勒钳位功能&#xff0c;漏极开路故障反馈&#xff0c;软关断功能以及可选择的自恢复模式&#xff0c;兼容光耦隔离驱动器&#xff0c;一款高…

安装mongodb6

一、安装mongodb6.0.2 1.官网下载社区版 https://www.mongodb.com/ 2.双击下载的文件&#xff0c;按步骤安装 选择custom 自定义安装 改一下安装地址&#xff0c;路径最好不要带空格 Install MongoD as a Service 作为服务方式安装 Run the service as Network Service…

SuperMap iClient for Leaflet对EPSG:4509图加载滑动查询

作者&#xff1a;John SuperMap iClient for Leaflet对EPSG:4509地图加载&滑动查询 在WebGIS开发使用中&#xff0c;我们会遇到地图显示不了&#xff0c;以及查询到数据显示不出的问题&#xff0c;因此本文就以EPSG:4509为例介绍该坐标系地图加载和查询。 1、EPSG:4509地图…

数据分析案例:基于水色图像的水质识别

大数据分析课程、大数据分析班、大数据案例等&#xff0c;围绕大数据展开讲解。 数据分析案例&#xff1a;基于水色图像的水质识别&#xff0c;通过学习本案例&#xff0c;可以掌握图像切割、特征提取、模型构建和模型评价的主要方法和技能&#xff0c;并为后续相关课程学习及将…

蚂蚁面试官:Zookeeper 的选举流程是怎样的?我当场懵逼了

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 面试经常会遇到面试官问 Zookeeper 的选举原理&#xff0c;我心想&#xff0c;问这些有啥用吗&#xff1f;又不要我造火箭&#xff01; 每次面试也只知道个大概&#xff0c;并没有深究…

分布式电源接入对配电网影响的研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…