SpringBoot整合SpringSecurity

news2024/11/19 19:43:11

一、概述

1.1 Spring Security和Shiro

Spring SecuritySpring家族中的一个安全管理框架。

相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。

一般来说中大型的项目都是使用SpringSecurity 来做安全框架。

小项目有Shiro的比较多,因为相比与SpringSecurityShiro的上手更加的简单。

一般来说,常见的安全管理技术栈的组合如下:

  • SSM + Shiro

  • Spring Boot/Spring Cloud + Spring Security

但是单纯从技术上来说,无论怎么组合,都是可以运行的,这只是常见的推荐组合。

1.2 认证和授权

一般Web应用关于安全方面的两个主要区域是“认证”和“授权”(或者访问控制)。

  • 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户

  • 授权:经过认证后判断当前用户是否有权限进行某个操作

而认证和授权也是SpringSecurity作为安全框架的核心功能。

Spring Security中就具体化为**用户认证(Authentication)和用户授权(Authorization)**两个部分。

  • 用户认证指的是

    验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗的说就是系统认为用户是否能登录

  • 用户授权指的是

    验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对某一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗点讲就是系统判断用户是否有权限去做某些事情

二、SpringBoot整合SpringSecurity

2.1 创建SpringBoot项目

  • 配置项目基本信息
    在这里插入图片描述

  • 选择SpringBoot版本
    在这里插入图片描述

2.2 pom文件依赖信息

<dependencies>
    <!-- SpringBoot开发起步依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- SpringBoot web开发起步依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- lombok注解 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- SpringSecurity起步依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- SpringBoot Maven打包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果SpringBoot是2.5.x版本,那么Spring Security的版本是5.5

如果SpringBoot是2.7.x版本,那么Spring Security的版本是5.7

2.2 SpringBoot启动类信息

@SpringBootApplication
public class QuickStartApplication {
    public static void main(String[] args) {
        SpringApplication.run(QuickStartApplication.class, args);
    }
}

2.3 编写测试接口

@RestController
public class TestController {

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

三、效果演示

3.1 启动程序

在这里插入图片描述

这里可以得到两个信息:

  • 未编写application.yml文件的情况下,SpringBoot程序的默认访问端口是8080
  • Spring Security 的默认密码是a2bd471d-06fb-46f7-ae19-001deaaf54b6

3.2 访问测试接口

启动程序后访问:

http://127.0.0.1:8080/hello

发现路径会自动跳转到:

http://127.0.0.1:8080/login

在这里插入图片描述

这里的默认用户名是user,默认的密码就是项目启动时控制台上输出的默认密码。

输入用户和密码后出现的是一个白屏,这样也就是代表认证成功了。

此时再访问一次hello接口,发现已经可以正常访问了:
在这里插入图片描述

3.3 退出登录

如果此时想要退出登录,那么可以访问:

http://127.0.0.1:8080/logout

在这里插入图片描述

点击页面上的Log Out之后再访问测试接口就不会再得到结果,而是和一开始一样跳转到登录界面。

小结:

这里只是整合基础,实际开发的登录和登出并不是这么使用的。

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

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

相关文章

ChatGPT:开放AI平台的最新进展和功能

第一章&#xff1a;引言 在过去的几年中&#xff0c;人工智能技术取得了长足的发展&#xff0c;其在各个领域的应用也日益广泛。而在AI技术中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是备受关注的领域之一。ChatGPT作为OpenAI的开放AI平台上的一项重要技术&am…

【Duilib】通过xml文件布局界面

环境 VS版本&#xff1a;VS2013 概述 上一篇 【Duilib】入门 &#xff0c;简单介绍了Duilib库的使用&#xff0c;这一篇测试一下通过xml布局界面。 步骤 1、创建工程 以 Win32\Win32项目 为模板创建TestByXml工程&#xff0c;步骤与上一篇基本一致。 2、创建MainWndFrame&a…

简单分享在微信上怎么实现分销功能

小程序分销开发怎么做&#xff1f;在如今的电商市场中&#xff0c;小程序分销成为了一种新兴的销售模式&#xff0c;通过分销模式&#xff0c;商家能够借助分销商的力量提高销售额&#xff0c;同时分销商也能不用投入大量资金和时间&#xff0c;就能在小程序上进行销售。那么&a…

FL Studio21中文版音频宿主软件下载教程

FL Studio是很适合新手上手的宿主软件&#xff0c;这得益于FL Studio独特的编曲逻辑。水果可以允许我们不使用音轨的思路来编曲。在FL Studio中我们创建一个pattern后&#xff0c;可以添加乐器或采样进去进行编写&#xff0c;编写完善后将Pattern拖进播放列表进行编排。不用区分…

高性能计算可以自学么?自学学完高性能计算能就业吗

随着超算互联网的认知越来越深&#xff0c;越来越多同学意识到高性能计算是未来有可能最好的就业方向之一。 高性能计算因其更偏底层、更不易被替代&#xff0c;因此广受广大大学生朋友和在职程序员的青睐。那么自学高性能计算可行吗&#xff1f;高性能计算可以自学吗&#xff…

2023年Java 毕业设计怎么选题,有哪些注意事项

个人简介&#xff1a;程序员徐师兄&#xff0c;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&#xff0c;springboot等等项目框…

Microsoft Visual Studio × 出现错误,无去启动

Microsoft Visual Studio 出现错误,无去启动visual studio。 streamJsonRpc.RemotelnvocationException:cannot find service module info file ‘ldentitystorageservice.servicehub.service.json’ in ‘c:}ProgramFilesvicrosoft visual studio2022,Communitycommon7Servic…

【Java-15】反射知识总结

01_类的加载 类的加载过程类的加载时机 类的加载 当程序在运行后&#xff0c;第一次使用某个类的时候&#xff0c;会将此类的class文件读取到内存&#xff0c;并将此类的所有信息存储到一个Class对象中 说明&#xff1a;Class对象是指java.lang.Class类的对象&#xff0c;此类…

GaussDB WDR报告分析

标题 问题描述问题现象告警业务影响原因分析处理方法步骤 1步骤 2步骤 3步骤 4步骤 6步骤 7步骤 8步骤9步骤 10步骤 11步骤 12 问题描述 CPU使用率高。 问题现象 出现CPU使用率超过阈值&#xff0c;CPU使用率快速上涨或短时间持续较高水平等现象。 告警 CPU使用率告警。 …

去除小程序home按钮

前言&#xff1a;当我们未登录时&#xff0c;会跳转到登录页&#xff0c;但是这时候登录页左上角会有一个跳转到首页的按钮&#xff0c;但是&#xff0c;我们不希望出现这个回到首页的按钮 去除前&#xff1a; 去除后&#xff1a; 代码&#xff1a; onShow() {wx.hideHomeBut…

html5的drag属性实现拖放

70. html5的drag属性实现拖放 拖放&#xff08;Drag 和 Drop&#xff09;是很常见的特性。它指的是您抓取某物并拖入不同的位置。 拖放是 HTML5 标准的组成部分&#xff1a;任何元素都是可拖放的。 下面我们通过一个例子来实现拖放 <div id"drop" ondrop"…

快一起来看看好用的ai绘画以图生图教程有哪些吧

我朋友近期在研究ai绘画软件&#xff0c;想要用它创造出一些独特的艺术作品。所以他去查看了ai绘画软件排行榜&#xff0c;但是&#xff0c;里面有很多款不同类型的绘画软件&#xff0c;让人有点眼花缭乱。于是&#xff0c;他来问我ai绘画软件排行靠前的哪个好&#xff0c;我就…

Excel - Windows操作系统下的键盘快捷方式

注意&#xff1a; * 这些快捷方式指的是美式键盘布局。 其他键盘布局的键可能与美式键盘上的键不完全对应。 * 快捷方式中的加号 () 表示需要同时按多个键。 * 快捷方式中的逗号 (,) 表示需要按顺序按多个键。 * 如果经常使用的操作没有快捷键&#xff0c;则可以“录制宏”…

mybatis 模拟03

pom.xml: <?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…

hexo stellar设置笔记页面

stellar主题的作者在其文档介绍了如何进行笔记页面的简单设置&#xff0c;但是我看了以后还是有点云里雾里&#xff0c;在一顿查阅资料以后&#xff0c;我终于找到了解决办法。 参考下面这个博主的文章。写得很详细&#xff0c;这里就不再赘述啦。 Stellar主题自定义侧边栏教…

通联历史数据如何自动化导入 DolphinDB

在部署完 DolphinDB 后&#xff0c;需要将历史数据批量导入数据库&#xff0c;再进行数据查询、计算和分析等操作。为便于用户快速导入通联历史 Level-2 行情数据&#xff0c;DolphinDB 开发了 DolphinDBModules::easyTLDataImport 模块&#xff08;简称 easyTLDataImport 模块…

Vue之事件修饰符

文章目录 前言一、事件修饰符二、实例1.prevent2.stop3.capture4.self 总结 前言 对事件进行处理。 一、事件修饰符 prevent&#xff1a;阻止默认事件&#xff08;常用&#xff09;。stop&#xff1a;阻止事件冒泡&#xff08;常用&#xff09;。once&#xff1a;事件只触发一…

Linux 系统下克隆 Github 项目指令

文章目录 1. 安装 git2. 设置用户名和邮箱3. 生成密钥4. 复制密钥5. 配置 Github SSH keys6. 克隆项目 1. 安装 git Ubuntu 安装指令 apt-get install gitCentOS 安装指令 yum install git 查看 Git 版本信息 git version2. 设置用户名和邮箱 git config --global user.nam…

【AI底层逻辑】——篇章3(下):信息交换信息加密解密信息中的噪声

续&#xff1a;【AI底层逻辑】——篇章3&#xff08;上&#xff09;&#xff1a;数据、信息与知识&香农信息论&信息熵 目录 三、信息是如何交换的 1、互联网与信息交换 2、哈夫曼和有效编码 四、信息的加密与解密 1、密码学的发展 2、可以被公开的密钥 五、信息…

js 左右滑动切换图片

一、效果图 二、代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…