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



