SpringBoot整合SpringSecurity+JWT+Redis实现前后端分离认证授权 - 入门案例

SpringBoot整合Spring Security 入门案例

0.前言

本系列的文章为实战项目中,SpringBoot整合SpringSecurity+JWT+Redis实现前后端分离模式下的认证和授权,从0到完成所有的实现步骤,包括SpringSecurity源代码解析,认证流程分析,本系列文章是针对后端的实现只有后端代码不关乎前端,前端比较简单基本就是token的储存和传递,本文不做赘述。

1.概述

SpringSecurity 是Spring 家族中的一个安全框架,相比于另一个安全框架Shiro,他提供了更丰富的功能,社区资源也比Shiro更丰富。一般来说,中大型项目都是使用SpringSecurity来做安全框架,小项目有用Shiro比较多,因为相比SpingSecurityShiro的上手更加简单。
认证: 验证当前系统是不是本系统的用户,并要确认是哪个用户。
授权: 经过认证后判断当前用户是否有权限进行某个操作
认证和授权也是SpringSecurity的核心功能。

2.快速开始

2.1 准备

创建一个SpringBoot工程,添加pom依赖

2.1.1 SpringBoot与SpringSecurity对应版本

或者在idea里面向导创建,勾选上SpringSecurity的依赖

SpringSecurity 5.0+ 版本变动较多,且不兼容之前版本,确保你的 SpringBoot 版本为 2.0

SpringBoot整合SpringSecurity+JWT+Redis实现前后端分离认证授权 - 入门案例_第1张图片

我这边是用的版本为:

  • Spring版本:5.3.20
  • SpringBoot版本:2.7.0
  • SpringSecurity版本:5.7.1

把pom中的依赖也放在下面:

 <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-securityartifactId>
        dependency>

2.2 测试

为了更好的测试,我们先把上面列的SpringSecurity的依赖先去掉,然后我们编写一个测试用的controller

@RestController
@RequestMapping
public class TestController {

    @GetMapping("/hello")
    public String test(){
        return "Hello,Spring Boot";
    }
}

接下来浏览器访问这个接口地址:

SpringBoot整合SpringSecurity+JWT+Redis实现前后端分离认证授权 - 入门案例_第2张图片

那么OK ,说明我们SpringBoot的项目运行正常,接下来,把注释掉的SpringSecrrity的依赖放开,重启项目,依然访问这个接口,
我们会发现:
SpringBoot整合SpringSecurity+JWT+Redis实现前后端分离认证授权 - 入门案例_第3张图片
惊奇的发现会出现这样一个页面,这个页面就是SpringSecurity提供的,只要我们把SpringSecurity引入工程,SpringSecurity就会把我们工程里的所有接口保护起来,没有经过认证的一律被拦截在外面!那么目前这个登录页面我们怎么登录进去,在项目启动的时候SpringSecurity把默认密码打印在了控制台上,我们只需要在控制台找到密码:
在这里插入图片描述

使用默认用户名user进行登录,当我们登录完成后又会跳转到我们接口的访问地址上:

SpringBoot整合SpringSecurity+JWT+Redis实现前后端分离认证授权 - 入门案例_第4张图片

3.总结

以上便是SpringSecurity的初体验,那我们思考一下我们要是应用在项目里面的话要怎样去做:

  1. 我们前后端分离的认证模式中首先这个内置的登录页面我们就不需要了
  2. SpringSecurity为我们提供了默认的用户名和密码,我们实际使用中这些都是要在自己数据库里面获取
  3. 实际需求中除了这种用户名密码登录,我们还有很多其他需求的登录 比如 短信、邮箱等等,怎么去扩展我们其他方式的登录认证呢?

你可能感兴趣的:(SpringSecurity,spring,boot,java,intellij-idea,后端,spring)