初识springSecurity

  1. 初识SpringSecurity
    对于SpringSecurity,可以由其官网中的介绍了解到其概述:

SpringSecurity就是一个功能强大且高定制化的身份验证和访问控制框架,它事实上就是一个保护基于Spring的应用框架安全性的标准。
Spring Security是一个重点为Java应用程序提供身份验证和授权的框架。
与所有Spring项目一样,Spring Security的真正强大之处在于它可以很容易地扩展以满足定制需求
对于SpringSecurity的特性,可以总结为以下几点:

  1. 对身份认证和授权提供全面和可扩展的支持。
  2. 防止会话固定、劫持请求、跨站点请求伪造等攻击。
  1. Servlet API的集成。
  2. 与Spring Web MVC的可选集成。
    在进行代码编写时,先得对SpringSecurity有一个整体上的认识,等进行coding时才能知道对应代码的对应作用。
    springsecurity有很重的jsp风格,要想在前后端分离架构中使用我们必须进行转换

注意:
springSecurity本身帮我们实现了登录注销功能我们不需要再次实现此功能,但是这些满足不了我们的需求故次还得实现(有点废话连篇),
springsecurity框架是一个非常精细的框架,记住这句话

在SpringSecurity继承的项目中,主要有四个核心的jar包:
spring-security-core.jarSpringSecurity的核心包,任何SpringSecurity的功能都需要此包。spring-security-web.jarweb工程必备,包含过滤器和相关的Web安全基础结构代码。
spring-security-config.jar用于解析xml配置文件,用到SpringSecurity的xml配置文件的就要用到此包。

由于spring-security-web.jar和spring-security-config.jar都依赖了spring-security-core.jar,所以只需要导入spring-security-web.jar和spring-security-config.jar即可。

**Spring Security对

Web系统的支持就是基于这一个个过滤器组成的过滤器链**:

springSecurity中定义了很多过滤器这里我们只关注下面两个过滤器即可:UsernamePasswordAuthenticationFilter负责登录认证,FilterSecurityInterceptor负责权限授权。

Spring Security的核心逻辑全在这一套过滤器中,过滤器里会调用各种组件完成功能,掌握了这些过滤器和组件你就掌握了Spring Security!这个框架的使用方式就是对这些过滤器和组件进行扩展。

接下来我们手把手开启一个springsecurity的旅程吧!

首先创建一个springboot工程并且导入一下依赖

image.png

至此我们的springsecurity框架就整合好了,简单吧

但是框架本身的实现并不满足公司得开发(而且更不满足前后端分离架构)的需求所以我们需要自己进行配置,

首先创建一个配置类并且继承WebSecurityConfigurerAdapter类重写他的两个方法然后在添加@EnableWebSecurity注解
初识springSecurity_第1张图片

至此我们就配置好了springsecurity配置类
protected void configure(AuthenticationManagerBuilder auth){}(认证)
protected void configure(HttpSecurity http){}(授权)

认证很简单我们只需要实现UserDetailsService接口并重写它的loadUserByUsername(String username)方法即可然后注入到protected void configure(AuthenticationManagerBuilder auth){}方法中就好了认证就完了是不是很简单

初识springSecurity_第2张图片

问题来了,那么后面的.passwordEncoder方法是干什么的,别着急我接下来会讲到
由于springsecurity认为明文的密码是不安全的所以我们再注册时需要对密码进行加密这里我们就使用springsecurity自带的加密方法它集成了很多加密器我们这里使用BCrypt进行加密,也很简单只需要注册时对密码进行加密即可

image.png

那么密码进行了加密我们在认证时肯定也需要相同的加密器进行读取就有了.passwordEncoder方法

image.png

只需要将BCryptPasswordEncoder()注入到配置文件中即可
接下来我们就是实现各种过滤器然后再 protected void configure(HttpSecurity http){}方法中配置进去这个方法的主要作用就是授权进行权限的校验

遗留问题:springsecurity如何进行密码校验,权限问题如何实现...

由于时间原因我们暂时讲到这里,遗留下的问题我日后会更新上去

你可能感兴趣的:(初识springSecurity)