这里写目录标题
1.前言
我们在日常的项目开发过程中经常会开发登录认证,授权等基础功能。这些功能看上去简单,实际上也简单,但是它却在我们项目中有着举足轻重的地位,是一切业务的根本。为了统一解决这一根本问题,软件行业的巨头公司出了一些框架, 如: apache shiro, spring security, Sa-Token。那么今天我们就来聊聊 spring security。
2.简介
2.1 什么是 spring security
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。它是保护基于 Spring 的应用程序的事实上的标准。
Spring Security 是一个专注于为 Java 应用程序提供身份验证和授权的框架。与所有 Spring 项目一样,Spring Security 的真正强大之处在于它可以轻松扩展以满足自定义要求
spring security 的特征
对身份验证和授权的全面且可扩展的支持。
防止会话固定、点击劫持、跨站点请求伪造等攻击
Servlet API 集成
与 Spring Web MVC 的可选集成
2.2 spring security 的优点
1.提供了一套权限框架,这套框架是可行的
2.提供了很多用户身份认证功能,可以节约大量开发工作
3.提供了角色判断功能,这点既是优点又是缺点
4.提供了csrf防攻击的拦截
5.提供了oauth2.0友好的兼容模式
2.3 spring security 的缺点
1.自身提供的加密方式不友好
2.扩展难度比较大。
3.学习成本比较高
3. spring security的第一个程序
3.1 自定义pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>spring-boot-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.2.10.RELEASE</version>
</parent>
<groupId>com.security</groupId>
<artifactId>security</artifactId>
<version>1.0-SNAPSHOT</version>
<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>
</dependencies>
</project>
3.2 定义启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@EnableWebSecurity
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@EnableWebSecurity 该注解的作用是想项目引入spring security 相关的几个配置信息类,如: WebSecurityConfiguration, SpringWebMvcImportSelector, OAuth2ImportSelector
WebSecurityConfiguration : 是用来自定义配置认证,授权以及 csrf相关的配置接口,在项目中你可以通过实现它来配置登录认证和授权相关的功能。
SpringWebMvcImportSelector: 是一个条件选择器,他会判断你的web服务器是不是DispatcherServlet然后再考虑会不会去引用WebMvcSecurityConfiguration,这也是 spring boot 自动装配的思想
OAuth2ImportSelector 当你项目中实现了 OAuth2ClientConfiguration oauth2的功能配置那么它会根据不同的web服务器引入相应的oauth2的配置类
3.3 定义 yml
server:
port: 8088
spring:
security:
user:
name: admin
password: admin
这里我们在配置文件自定义了账号和密码,当然你也可以不自定义,当你启动的时候它会自动给你生成uuid的密码
3.4 启动相关
这样spring security就成功引用了,很简单吧!但是java的知识都是入门简单精通太难,hello word 用什么语言实现都简单