SpringSecurity入门,前后端分离案例(笔记持续更新...)

SpringSecurity入门

简介

SpringSecurity 是Spring家族中的一个安全管理框架。相比于另一个安全框架 Shiro ,它提供了更丰富的功能,社区资源也比Shiro丰富。
一般来说中大型的项目都是使用 SpringSecurity 来做安全框架。小项目用 Shiro 的比较多,因为相比于 SpringSecurity , Shiro 的上手会更简单一些。
一般 Web 应用需要进行认证授权

  • 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户
  • 授权:经过认证后判断当前用户是否有权限执行某个操作

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

1、快速入门

1.1、准备工作

首先搭建一个简单的SpringBoot工程
① 设置父工程,添加依赖

<parent>
	<artifactId>spring-boot-starter-parent</artifactId>
	<groupId>org.springframework.boot</groupId>
	<version>2.5.0</version>
</parent>

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

	<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
	</dependency>
</dependencies>

② 创建启动类

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

③ 编写测试controller,启动服务器测试

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }
}

④ 显示如下,准备工作完成
在这里插入图片描述

1.2、引入SpringSecurity

在 SpringBoot 项目中使用 SpringSecurity 我们只需要引入依赖即可实现入门案例。

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

引入依赖后再次取尝试访问之前的接口(http://localhost:8080/hello),就会自动跳转到 SpringSecurity 的默认登陆页面,默认用户名是user,密码会输出在控制台
在这里插入图片描述在这里插入图片描述

登录成功后,就可以进入到我们要访问的接口(http://localhost:8080/hello)
在这里插入图片描述
之后切换路径为:http://localhost:8080/logout,实现退出
在这里插入图片描述

2、认证

2.1、登录校验流程

核心是token
在这里插入图片描述

2.2、初步认识原理

想要知道如何实现自己的登录流程,就必须要先知道入门案例中的SpringSecurity的流程。

2.2.1、SpringSecurity完整流程

SpringSecurity 的原理其实就是一个过滤器链,内部包含了各种功能的过滤器,这里可以先看一下入门案例的过滤器。
在这里插入图片描述

  1. UsernamePasswordAuthenticationFilter:负责处理我们在登录页面填写了用户名密码后的登录请求,入门案例的认证工作主要由它负责

  2. ExceptionTranslationFilter:处理过滤器链中抛出的任何AccessDeneidException 和 AuthenticationException

  3. FilterSecurityInterceptor:负责权限校验的过滤器

2.2.2、认证流程详解(后续补充)

2.3、解决问题

2.3.1、思路分析

登录:

① 自定义登录接口,调用ProviderManager的方法进行认证,如果认证通过就生成jwt,把用户id作为key,用户信息作为value存入Redis中。

② 定义UserDetailsService,在这个实现类中去查询数据库。

校验:

① 定义jwt认证过滤器,需要获取token,解析token,获取其中的userId,之后从Redis中获取用户信息。

② 将用户信息存入SecurityContextHolder

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring Security是一个功能强大的身份验证和访问控制架,可以用于保护Java应用程序的安全性。在前后分离的项目中,Spring Security可以用于实现用户认证和授权功能。 下面是Spring Security整合前后分离项目的一般步骤: 1. 添加依赖:在项目的构建文件中添加Spring Security的依赖,例如使用Maven的话,在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 2. 配置Spring Security:创建一个配置类,继承自`WebSecurityConfigurerAdapter`,并重写`configure`方法来配置Spring Security的行为。在这个方法中,你可以定义用户认证、授权规则以及其他安全相关的配置。 3. 用户认证:可以使用Spring Security提供的默认用户认证方式,也可以自定义用户认证逻辑。如果使用默认方式,可以在配置类中通过`configure`方法配置一个内存中的用户存储,或者使用数据库存储用户信息。 4. 授权规则:通过`configure`方法配置URL路径的访问权限,可以设置哪些URL需要进行认证,哪些URL不需要认证。可以使用`antMatchers`方法来匹配URL路径,并设置相应的访问权限。 5. 跨域资源共享(CORS):由于前后分离项目中,前和后可能运行在不同的域名下,需要配置CORS来允许跨域请求。可以通过`configure`方法配置CORS相关的设置。 6. 登录和注销:在前后分离项目中,一般使用JSON Web Token(JWT)来实现无状态的认证。可以通过`configure`方法配置登录和注销的URL,并定义相应的处理逻辑。 7. 异常处理:在配置类中可以定义异常处理的逻辑,例如处理认证失败、访问拒绝等异常情况。 8. 前集成:前需要发送认证请求,并在每个请求中携带认证信息。可以使用前框架(如Vue、React等)来发送请求,并将认证信息存储在本地(如LocalStorage)。 以上是Spring Security整合前后分离项目的一般步骤,具体的实现方式会根据项目需求和技术栈的不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宫野琦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值