1. Spring Security 简介
1.1 背景分析
企业中数据是最重要的资源,对于这些数据而言,有些可以直接匿名访问,有些只能登录以后才能访问,还有一些你登录成功以后,权限不够也不能访问.总之这些规则都是保护系统资源不被破坏的一种手段.几乎每个系统中都需要这样的措施对数据(资源)进行保护.我们通常会通过软件技术对这样的业务进行具体的设计和实现.早期没有统一的标准,每个系统都有自己独立的设计实现,但是对于这个业务又是一个共性,后续市场上就基于共享做了具体的落地实现,例如SpringSecurity,Apache shiro诞生了.
1.2 Spring Security 概述
Spring Security 是一个企业级安全框架,有Spring官方推出,它对软件系统中的认证,授权,加密等功能进行封装,并在SpringBoot技术推出以后,配置方面做了很大的简化.市场上现在的分布式架构下的安全控制正在逐步的转向Spring Security.
1.3 Spring Security 基本架构
Spring Security 在企业中实现认证和授权业务时,低层构建了大量的过滤器.  其中:绿色部分为认证过滤器,需要我们自己配置,也可以配置多个认证过滤器.也可以使用Spring Security提供的默认认证过滤器.黄色部分为授权过滤器.Spring Security就是通过这些过滤器然后调用相关对象一起完成认证和授权操作.
2. Spring Security 快速入门
2.1 创建工程

2.2 添加项目依赖
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
创建配置文件 在resources目录下创建application.yml文件,并指定服务端口
server:
port:8080
2.3 创建项目启动类并运行
 第一步:检查控制台输出的密码
Using generated security password: 800993a7-c97b-4563-8b0e-ee42d292be2c
第二步:浏览器访问localhost:8080如下显示  用户名:user(系统默认) 密?码:800993a7-c97b-4563-8b0e-ee42d292be2c(控制台生成)
登陆后的效果: 404不是错,是因为没有默认登录页面 
自定义登陆成功页面
在项目的resources目录下创建static目录,并在此目录创建一个index.html文件  重启服务再次登录访问测试,登录成功后系统默认跳转到index.html页面 
配置登录密码
在application.yml文件中可配置用户名和密码
spring:
security:
user:
name: DJH
password: ghhyw
查看application.yml文件可以看到密码,可以采用密码加密算法生成密码,如MD5, BCrypt,如下:   其中,{bcrypt}是指定密码加密时使用的算法
3. Spring Security 认证实践
4. Spring Security 授权实践
|