最近公司项目安全模块中的的权限认证相关需要重构。老版本的权限认证逻辑都与业务逻辑混在一起,用户进行每一个功能项都需要判断是否有该操作的权限;而且判断分布在每一个功能代码中,难以维护;因此终于有某个大佬看他不爽决定重构,但是谁来搞定呢,抽签被选中!
为此我查了一下相关资料,看了一些案例,决定采用Spring Security+AOP来进行权限认证,实现安全模块与业务模块的分离。
在此之前对Spring Security有一定的了解,但是在各个方面还需要重新回顾一下,以便能在重构过程中细节方面处理更好,避免维护时麻烦;
在回顾的同时准备写博文记录一下,一方面增加理解,另一方面方便以后查阅;
目前此博文打算根据自己的项目需求,从Spring Security入门到深入来作为一个系列来写,希望自己在紧张的工作之余能够坚持将此系列更新到最后!
加油!加油!加油!!!!!
- 此系列开发环境
- 操作系统:Win10
- JDK1.8
- 开发工具 Spring Tool Suite 4 4.5.1.RELEASE (默认)或者 eclips 4.7.3
- Spring Boot 2.3.3.RELEASE
- Spring Framework 5.2.8.RELEASE
- Spring Security 2.3.3.RELEASE
Spring Security 系列一 初识
- Spring Security 总览
- Spring Security特征
- 一、创建Spring Security项目demo
- 1.通过eclips创建Spring Security项目
- 2.创建一个简单的示例
- 总结
Spring Security 总览
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。
Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求
Spring Security特征
- 对身份验证和授权的全面且可扩展的支持
- 防止攻击,例如会话固定,点击劫持,跨站点请求伪造等
- Servlet API集成
- 与Spring Web MVC的可选集成
- 等等……
提示:以下是本篇文章正文内容,下面案例可供参考
一、创建Spring Security项目demo
这是第一篇博文,所以目前规划是按照程序员熟悉一门技术的老规矩,首先创建一个简单的Spring Security项目,完整的“撸”一遍创建项目的流程和一个Hello World示例。然后我会在让后系列中慢慢的向里面充实内容
1.通过eclips创建Spring Security项目
- 按下图填写相关信息直接下一步下一步即可完成项目创建
- 项目目录结构
- pom.xml文件中引入的相关依赖
<dependency >
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.创建一个简单的示例
通过web来测试效果,pom.xml中还需要引入Spring boot web依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
public class SpringSecurityController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Security!";
}
}
选中SpringSecurityApplication运行,浏览器中输入http://localhost:8080/ 将出现如下一个表单登录页面;
默认使用用户名为user,密码则是动态生成并打印到控制台中;
用户名和密码是可以配置的,这里我们只是最简单的在application.properties文件中进行配置,我们会随着项目的深入,使用项目实际的一般配置;
spring.security.user.name=admin
spring.security.user.password=123456
重启项目即可用以上用户名密码登录了
总结
以上spring boot项目只需要引入Spring-Securit依赖,一个controller即可完成最简单的一个Spring-Securit demo;spring boot 默认Spring Security配置的登录方式是http基本认证,即用户名密码在弹出框中完成。这种方式安全性差,灵活性不足,所以生产上没有人会用这种方式。通常我们真正项目上使用表单认证方式,下一篇我们实现使用表单认证;