帘外芭蕉惹骤雨,门环惹铜绿,而我路过那江南小镇惹的你。
一、什么是Spring Security
先看下官网解释
Spring Security
Spring Security is a framework that provides authentication, authorization, and protection against common attacks. With first class support for securing both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications.
百度翻译
Spring Security是一个提供身份验证、授权和防止常见攻击的框架。凭借对保护命令式和反应式应用程序的一流支持,它是保护基于Spring的应用程序的事实标准。
通俗一点说,spring security是一个支持命令式和响应式编程的应用程序的安全框架,他式基于spring应用程序的默认标准,提供认证、授权、以及一些常见攻击的框架。
当然安全框架不止spring security一个,java开发基本都有了解过shiro,shiro是一款轻量级安全框架,使用起来比较简单。但是spring security虽然相对复杂,但是其中提供了非常的扩展能力,能够应对更多的场景需求,在当前使用spring框架的应用程序中,基本都推荐使用spring security作为安全框架了。
在后面的课程中,我们将会从spring security原理及源码介绍其使用方法。
二、Spring Security使用场景
在现代web应用中,几乎所有的应用都需要登录验证身份信息,无论是以何种形式的如用户名密码登录的,使用第三放账号登录的等等;所以spring security就应运而生,可以不夸张的说一句,在现在java开发的web应用中,凡是使用spring作为基础框架的,一定会使用spring security作为安全依赖。
当然如果是开放型的web应用,或者对外只提供接口的就另当别论了。这里只想说spring security应用还是很广泛的,当然引入spring security实现业务功能,相关的博文也是很多的,是可以很快的集成到你们的项目中的,不过有兴趣的话还是可以深入了解一下spring security是如何工作的。
三、springboot整合Spring Security
3.1 整体架构
整体项目是采用的阿里巴巴开源的cola架构搭建的,下面先看下整体项目结构,当然只是初始的,后面我们将一步一步完善。
这里简单描述下这个项目结构,starter模块是启动模块,adapter模块是适配器模块,简单理解就是传统的controller层放这个模块里,当然不止controller,详细的下次单独介绍一下cola模块,infrastructure模块是基础设施模块,简单理解就是DAO与数据库交互层,或者一些配置、远程调用等等。
3.2 引入依赖
这里我们依赖的springboot版本是2.7.18
在父模块引入spring-boot依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.14</version>
</parent>
这个在子模块引入spring-security依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3.3 启动项目
先看下没引入 spring-boot-starter-security 依赖的时候是什么样子的
可以看到,就是我们一个普通springboot项目启动,没有任何新鲜的东西,随便建个接口访问一下看看:
好了,一切正常,下面加入 spring-boot-starter-security 依赖
可以看到,引入 security 依赖后,启动会生成一个随机密码,再次访问上面的接口已经不可以了,我们 使用 user 用户名和启动生成的随机密码后才可以正常访问;
至此,security依赖已经完成引入了,过程简单,正常不会出现意外。如果你在引入的过程中出现意外,欢迎评论区留言讨论。