热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringSecurity基础配置详解

本文详细介绍了SpringSecurity的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。

本文将详细介绍Spring Security的基础配置,旨在帮助开发人员理解并掌握如何在实际项目中有效使用这一强大的安全框架。Spring Security是一个专为Java应用设计的、功能全面且高度可定制的身份验证和访问控制框架。

首先,我们将创建一个Maven多模块工程来组织不同部分的功能:

Spring Security基础配置详解

  • 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,由于此请求不需要认证,因此可以直接访问:

Spring Security基础配置详解

接着访问 http://localhost:18081/user,由于此请求需要认证,因此会被重定向到Spring Security的默认登录页面(也可以自定义登录页面):

Spring Security基础配置详解

使用任意用户名和日志中的默认密码完成登录后,即可访问/user接口。再次访问同一URL时,由于已通过认证,因此可以直接访问:

Spring Security基础配置详解

以上就是关于Spring Security基础配置的全部内容,希望能帮助您更好地理解和使用Spring Security。如果您想了解更多相关内容,欢迎继续关注我们的技术博客。


推荐阅读
author-avatar
禹Ayu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有