作者:禹Ayu | 来源:互联网 | 2024-11-22 20:52
本文详细介绍了SpringSecurity的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。
本文将详细介绍Spring Security的基础配置,旨在帮助开发人员理解并掌握如何在实际项目中有效使用这一强大的安全框架。Spring Security是一个专为Java应用设计的、功能全面且高度可定制的身份验证和访问控制框架。
首先,我们将创建一个Maven多模块工程来组织不同部分的功能:
- spring-security:作为整个项目的父模块
- spring-security-browser:负责处理与浏览器相关的认证逻辑,最终打包成jar供其他模块使用
- spring-security-core:包含认证过程中所需的公共方法和类,同时管理公共依赖项
- spring-security-demo:提供一个具体的认证示例服务
spring-security-core模块的pom.xml文件中,添加了以下依赖项以支持基础功能和开发便利性:
org.apache.commons
commons-lang3
3.7
org.apache.commons
commons-collections4
4.1
commons-beanutils
commons-beanutils
commons-io
commons-io
2.6
org.projectlombok
lombok
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-thymeleaf
spring-security-browser模块的pom.xml文件中,除了引入Spring Boot的Web和数据JPA启动器外,还依赖于spring-security-core模块:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
com.xwj
spring-security-core
0.0.1-SNAPSHOT
在spring-security-browser模块中,我们配置了基本的安全策略:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin(); // 表单登录,跳转至Spring Security默认登录页面
// http.httpBasic(); // 基本认证方式
.and()
.authorizeRequests() // 对请求进行授权
.antMatchers("/noAuth").permitAll() // 允许所有用户访问/noAuth路径
.anyRequest() // 任何其他请求
.authenticated(); // 需要身份验证
}
}
spring-security-demo模块的pom.xml文件中,主要依赖于spring-security-browser模块:
org.springframework.boot
spring-boot-starter-web
com.xwj
spring-security-browser
0.0.1-SNAPSHOT
在Controller中,我们定义了两个简单的接口,分别用于测试无需认证和需要认证的请求:
@RestController
@RequestMapping
public class IndexController {
/**
* 不需要认证的请求
*/
@GetMapping("/noAuth")
public String noAuth() {
return "noAuth";
}
/**
* 需要认证的请求
*/
@GetMapping("/user")
public String user() {
return "user";
}
}
启动应用后,可以在日志中看到默认的安全密码,这将在登录时使用:
Using default security password: 90d9e73a-490c-484b-b7c5-5cd75c634e2f
应用运行在18081端口上。尝试访问 http://localhost:18081/noAuth,由于此请求不需要认证,因此可以直接访问:
接着访问 http://localhost:18081/user,由于此请求需要认证,因此会被重定向到Spring Security的默认登录页面(也可以自定义登录页面):
使用任意用户名和日志中的默认密码完成登录后,即可访问/user接口。再次访问同一URL时,由于已通过认证,因此可以直接访问:
以上就是关于Spring Security基础配置的全部内容,希望能帮助您更好地理解和使用Spring Security。如果您想了解更多相关内容,欢迎继续关注我们的技术博客。