前言
公众号 《java编程手记》记录JAVA学习平常,分享学习路上点点滴滴,从入门到放弃,欢迎关注java
Spring Security 是一套基于Spring框架,旨在为基于javaEE的企业应用程序提供一个全面的解决方案。Spring Security在web方面的应用主要依赖于Servlet的Filter机制,经过组装一系列的FilterChain达到web会话请求的校验认证受权等一系列操做web
入门Demo
引入POM依赖
本次使用SpringBoot+SpringSecurity进行Demo实现,SpringBoot
版本为2.4.4
spring
<!--?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.4.4</version> <relativepath /> <!-- lookup parent from repository --> </parent> <groupid>com.uiaoo.study</groupid> <artifactid>study-security</artifactid> <version>0.0.1-SNAPSHOT</version> <name>study-security</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-security</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework.security</groupid> <artifactid>spring-security-aspects</artifactid> </dependency> <dependency> <groupid>org.springframework.security</groupid> <artifactid>spring-security-test</artifactid> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> </project>
重写WebSecurityConfigurerAdapter
WebSecurityConfigurerAdapter
是SpringSecurity在web场景的一个重要实现类,本文不作讨论,待后续文章专门分析该类实现。apache
引入JAR之后须要重写WebSecurityConfigurerAdapter
对象的configure
方法,方法签名以下,入参为HttpSecurity
,configure
方法主要使用ant风格对请求路径的url进行规则权限配置,登陆相关信息配置,登陆相关信息配置,匿名登陆相关信息配置等等,是SpringSecurity实现自定义的重要扩展点,这里作一个简单地实现控制编程
@Override protected void configure(HttpSecurity http) throws Exception { http.formLogin().and().authorizeRequests().antMatchers("/index").authenticated().anyRequest().permitAll(); }
如上表示,使用form表单登陆
验证,而且针对访问/index
的路径必须登陆,其余路径则放行经过,不作任何权限校验app
启动项目
实现index
路径请求,返回index
字符串框架
@SpringBootApplication @RestController public class StudySecurityApplication { public static void main(String[] args) { SpringApplication.run(StudySecurityApplication.class, args); } @GetMapping("/index") public Object index(){ return "index"; } }
默认Spring Security
会为默认用户user
随机生成一个用户密码`,并打印在控制台中maven
随便访问一个连接,默认会提示页面不存在404
,可是不会有任何权限登陆校验拦截ide
访问有权限校验的index
页面时会被重定向到则会跳转到Spring Security的默认登陆页面/login
spring-boot
经过帐户 user
以及控制台生成的密码a0aa9c06-28dd-408f-8801-2571a08409aa
进行登陆,登陆成功会跳转到原有的index
页面
至此已经初步完成了Spring Security的简单demo,咱们加入了SpringBoot
和SpringSecurityStarter
的依赖,重写了WebSecurityConfigurerAdapter
的configure
实现,而且进行了一些简单场景的校验,下一篇主要重点实现基于DB的权限控制