开发者

SpringBoot3整合SpringSecurity6快速入门示例教程

开发者 https://www.devze.com 2025-04-19 10:19 出处:网络 作者: 程序员晓凡
目录写在前面一、环境说明二、SpringSecurity 简介三、常用名词解释四、快速入门4.1 搭建一个Spring Boot Web项目4.2 引入SpringSecurity4.3 配置默认用户/密码4.4 注销五、SpringSecurity 默认做了什么?写在前面
目录
  • 写在前面
  • 一、环境说明
  • 二、SpringSecurity 简介
  • 三、常用名词解释
  • 四、快速入门
    • 4.1 搭建一个Spring Boot Web项目
    • 4.2 引入SpringSecurity
    • 4.3 配置默认用户/密码
    • 4.4 注销
  • 五、SpringSecurity 默认做了什么?

    写在前面

    不知道小伙伴们在学SpringSecurity过程中有没有和我一样的经历和烦恼。

    ①看完一篇文章或者一个教程,感觉学会了。但是一到实际项目中就不知道怎么用;

    ②被SprintSecurity 源码和各种专业名词搞得一头雾水,不知道如何下手,直接劝退;

    ③技术更新迭代非常快,网上一些文章教程知识点已经过时了,在新版本中已经不适用了。

    晓凡在学习过程中也同样遇到了这些问题,也被劝退过。但是,现在的安全框架也就那么几个,难啃也得硬着头皮上。

    原本打算一篇文章写完,但是基于SprintSecurity涉及到的知识点确实挺多,文章篇幅肯定很长。

    基于这些原因,晓凡打算将SpringBoot3整合SpringSecurity6写成一个系列文章,文章尽可能的通俗易懂,循序渐进,并穿插实际项目开发实例。

    让小伙伴们学起来没啥压力,学完之后能将SpringSecurity运用到实际项目中。

    当然,每个人的理解方式不同,可能有些重要的细节没讲到位,欢迎大家在评论区提问。受限于个人水平,一定有说的不对的地方,大家理解一下,友善白嫖哈。

    一、环境说明

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

    • SpringBoot 3.2.0
    • SpringSecurity 6.2.0
    • JDK 17
    • mysql 8.0

    二、SpringSecurity 简介

    SpringSecurity Spring大家族中一名重要成员,是专门负责安全的框架。

    提到安全框架,做过Java开发的小伙伴可能还听说过ShiroShiro相对于Spring Security来说,更加简单。一般小型项编程客栈目使用得比较多,

    这里就不展开说了,感兴趣的小伙伴可以评论区留言,晓凡后面出教程。Spring Security一般用在中大型项目中。

    Spring Security 能为项目做什么呢?

    我们来看看官方文档:https://docs.spring.io/spring-security/reference/index.androidhtml怎么说的?

    SpringBoot3整合SpringSecurity6快速入门示例教程

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

    三、常用名词解释

    上面提到了身份验证授权防止常见攻击 三个专业名词。晓凡这里以小区中的保安系统来说明,大家肯定就秒懂了。

    为了小区的安全,小区上了保安系统,确保只有合法的居民可以进入小区,并且他们只能访问自己的家,同时防止小偷和法外狂徒张三进来捣乱。

    身份认证(Authentication)

    • 就是确认你是谁的过程。Spring Security 会要求你提供一些信息,比如用户名和密码,然后它会检查这些信息是否正确。如果信息正确,就相当于给你发了一张小区的门禁卡,你就可以进入小区了。

    授权(Authorization)

    • 就是决定你可以做什么的过程。即使你进了小区,也不能随便去别人家。Spring Security 会检查你是否有权限去某个地方,比如你的家。你有权限,就可以进入;而隔壁老王,没有你家的权限,就会被拒之门外。

    防御常见攻击

    • 就像小区保安要防止小偷和张三一样,Spring Security 也提供了很多功能来防止各种网络攻击:
      • CSRF(跨站请求伪造):防止有人伪造你的请求,比如在你不知情的情况下,让你的账号发一些你不想要的帖子。
      • XSS(跨站脚本攻击):防止有人通过网页注入恶意脚本,偷取你的个人信息。
      • SQL注入:防止有人通过输入特殊的命令,来操纵数据库,获取或破坏数据。
      • 点击劫持:防止有人通过一些手段,让你在不知情的情况下点击一些链接,从而执行一些你不想执行的操作。

    四、快速入门

    说了一堆理论知识,下面晓凡带着大家敲代码,快速上手

    4.1 搭建一个Spring Boot Web项目

    ① 创建SecurityQuickStart项目

    SpringBoot3整合SpringSecurity6快速入门示例教程

    ② 创建controller

    @RestController
    public class HelloController {
        @GetMapping("/hello")python
        public String hello(){
            return "晓凡,你好!";
        }
    }

    ③ 启动项目,浏览器访问/hello接口

    浏览器中访问:http://localhost:8080/hello

    SpringBoot3整合SpringSecurity6快速入门示例教程

    4.2 引入SpringSecurity

    ① 引入依赖

    SpringBoot项目中使用SpringSecurity,我们只需要引入如下依赖即可

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    ② 访问接口

    依然在浏览器中输入:http://localhost:8080/hello

    这时候,我们发现hello接口不能访问了,而是跳转到一个登录页面:http://localhost:8080/login

    SpringBoot3整合SpringSecurity6快速入门示例教程

    这时候我们需要输入用户名和密码才能访问接口

    用户名默认为:user

    密码会在控制台中打印出来

    SpringBoot3整合SpringSecurity6快速入门示例教程

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

    SpringBoot3整合SpringSecurity6快速入门示例教程

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

    SpringBoot3整合SpringSecurity6快速入门示例教程

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

    SpringBoot3整合SpringSecurity6快速入门示例教程

    4.3 配置默认用户/密码

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

    SpringBoot3整合SpringSecurity6快速入门示例教程

    我们还可以通过application.yml配置文件来配置用户名和密码

    spring:
      security:
        user:
          password: 123456
          name: admin

    通过上面配置之后,控制台将不再输出随机生成的密码,我们也可以通过admin/123456 登录

    4.4 注销

    既然能登陆,那必然也是可以注销的。

    我们只需浏览器输入:http://localhost:8080/logout 然后点击Log Out 即可注销

    SpringBoot3整合SpringSecurity6快速入门示例教程

    五、SpringSecurity 默认做了什么?

    到这儿,我们算是正是入门了。其实我们出了引入依赖,其他啥也没干。那么SpringSecurity默认为我们做了些什么?

    ① 保护我们创建的/hello接口,不是随便一个老王就能来访问,要求对应用程序的任何交互进行身份验证;

    ② 程序启动时生成一个默认用户“user”;

    ③ 生成一个默认的随机密码,并将此python密码记录在控制台上;

    ④ 生成默认的登录表单和注销页面,并提供登录和注销功能;

    ⑤ 对于请求,重定向到登录页面

    到此这篇关于SpringBoot3整合SpringSecurity6(一)快速入门的文章就介绍到这了,更多相关SpringBoot整合SpringSecurity内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号