IT评测·应用市场-qidao123.com技术社区

标题: SpringBoot3整合SpringSecurity6(一)快速入门 [打印本页]

作者: 天空闲话    时间: 2025-4-15 08:03
标题: SpringBoot3整合SpringSecurity6(一)快速入门
大家好,我是晓凡。
写在前面

不知道小搭档们在学SpringSecurity过程中有没有和我一样的经历和烦恼。
①看完一篇文章大概一个教程,感觉学会了。但是一到实际项目中就不知道怎么用;
②被SprintSecurity 源码和各种专业名词搞得一头雾水,不知道如何下手,直接劝退;
③技术更新迭代非常快,网上一些文章教程知识点已经过时了,在新版本中已经不适用了。
晓凡在学习过程中也同样遇到了这些题目,也被劝退过。但是,现在的安全框架也就那么几个,难啃也得硬着头皮上。
本来打算一篇文章写完,但是基于SprintSecurity涉及到的知识点确实挺多,文章篇幅肯定很长。
基于这些缘故原由,晓凡打算将SpringBoot3整合SpringSecurity6写成一个系列文章,文章尽可能的通俗易懂,循序渐进,并穿插实际项目开辟实例。
让小搭档们学起来没啥压力,学完之后能将SpringSecurity运用到实际项目中。
当然,每个人的理解方式差异,可能有些重要的细节没讲到位,欢迎大家在评论区提问。受限于个人水平,肯定有说的不对的地方,大家理解一下,友善白嫖哈。
一、环境说明

现在技术更新迭代真的很快,不少小搭档还在抱怨,怎么又更新了,学不动了。晓凡也采用当前最新稳固版本的进行解说,具体如下

二、SpringSecurity 简介

SpringSecurity  是Spring大家族中一名重要成员,是专门负责安全的框架。
提到安全框架,做过Java开辟的小搭档可能还听说过Shiro。Shiro相对于Spring Security来说,更加简单。一样寻常小型项目使用得比较多,
这里就不展开说了,感兴趣的小搭档可以评论区留言,晓凡后面出教程。Spring Security一样寻常用在中大型项目中。
Spring Security 能为项目做什么呢?
我们来看看官方文档:https://docs.spring.io/spring-security/reference/index.html怎么说的?

翻译过来大概就是:Spring Security 是一个提供了身份验证授权防止常见攻击的功能的框架。
三、常用名词表明

上面提到了身份验证授权防止常见攻击 三个专业名词。晓凡这里以小区中的保安体系来说明,大家肯定就秒懂了。
为了小区的安全,小区上了保安体系,确保只有正当的住民可以进入小区,并且他们只能访问本身的家,同时防止小偷和法外狂徒张三进来捣乱。
四、快速入门

说了一堆理论知识,下面晓凡带着大家敲代码,快速上手
4.1 搭建一个Spring Boot Web项目

① 创建SecurityQuickStart项目

② 创建controller
  1. @RestController
  2. public class HelloController {
  3.     @GetMapping("/hello")
  4.     public String hello(){
  5.         return "晓凡,你好!";
  6.     }
  7. }
复制代码
③ 启动项目,浏览器访问/hello接口
浏览器中访问:http://localhost:8080/hello

4.2 引入SpringSecurity

① 引入依赖
在SpringBoot项目中使用SpringSecurity,我们只须要引入如下依赖即可
  1. <dependency>
  2.     <groupId>org.springframework.boot</groupId>
  3.     <artifactId>spring-boot-starter-security</artifactId>
  4. </dependency>
复制代码
② 访问接口
依然在浏览器中输入:http://localhost:8080/hello
这时间,我们发现hello接口不能访问了,而是跳转到一个登录页面:http://localhost:8080/login

这时间我们须要输入用户名和暗码才能访问接口
用户名默认为:user
暗码会在控制台中打印出来

留意:如果你没使用魔法上网,可能登录页面会如下图所示一样

遇到如许的,小搭档也不用慌,这是由于访问不了bootstrap.min.css样式造成的,并不影响正常业务流程

点击"Sign in"进行登录,就可以正常访问接口了

4.3 设置默认用户/暗码

默认环境下SpringSecurity  会为我们默认生成一个user用户,暗码采用uuid随机生成(通过下图中SecurityProperties类的静态内部类user生成)。

我们还可以通过application.yml设置文件来设置用户名和暗码
  1. spring:
  2.   security:
  3.     user:
  4.       password: 123456
  5.       name: admin
复制代码
通过上面设置之后,控制台将不再输出随机生成的暗码,我们也可以通过admin/123456 登录
4.4 注销

既然能登陆,那必然也是可以注销的。
我们只需浏览器输入:http://localhost:8080/logout  然后点击Log Out 即可注销

五、SpringSecurity 默认做了什么?

到这儿,我们算是正是入门了。其实我们出了引入依赖,其他啥也没干。那么SpringSecurity默认为我们做了些什么?
① 掩护我们创建的/hello接口,不是随便一个老王就能来访问,要求对应用步伐的任何交互进行身份验证;
② 步伐启动时生成一个默认用户“user”;
③ 生成一个默认的随机暗码,并将此暗码记录在控制台上;
④ 生成默认的登录表单和注销页面,并提供登录和注销功能;
⑤ 对于请求,重定向到登录页面
本期内容到这儿就竣事了,希望对您有所资助。
我们下期再见~ ヾ(•ω•`)o  (●'◡'●)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4