Spring Security框架简单搭建
Spring Security是Spring生态系统中一个重要的安全框架,专注于为Java应用程序提供全面的认证(Authentication)和授权(Authorization)功能。
最初我们写登录模块的时候就是从前端发起请求,然后servlet接收请求并通过service进行逻辑处理,访问数据库获取账号密码比对信息,最后返回密匙token。这样会产生输入验证、敏感信息泄露、会话管理、访问控制和加密措施等方面的安全问题。
Spring Security就是为了解决传统Servlet开发中存在的安全问题而诞生的。
Spring Security中文文档:https://springdoc.cn/spring-security/index.html
1.在web项目中搭建一个Spring Security框架需要引入依赖
这时候可以测试一下,在访问controller会让登录,在项目启动的时候有给密码,我们通过密码登录才可以访问数据。
2.这样就已经引入了Spring Security框架,接下来就是配置了。在Spring Security中,过滤器链遵循Servlet规范,通过在应用启动时注册一系列的过滤器来拦截HTTP请求。它主要通过一系列过滤器的链式调用来实现对Web请求的安全控制。我们可以自定义配置,除了/user/login外,其他一律验证
3.这时候需要再配置类中配置一个AuthenticationManager实例,它里面有一个authenticate方法,我们需要使用它进行验证。
4.在service层调用authenticate方法传入一个authentication对象,DaoAuthenticationProvider会调用UserDetailsService接口的loadUserByUsername方法,所以们还需要一个实现了UserDetailsService接口的类重写loadUserByUsername方法(第5步)
5.首先需要准备一个UserDetails对象,这个对象包含了用户的基本信息和权限信息,当用户访问受保护的资源时,Spring Security会检查用户是否具有相应的权限。
6.实现UserDetailsService接口,UserDetailsService是Spring Security中用于加载用户特定数据的接口。它包含一个名为loadUserByUsername()的方法,我们在这个方法自定义认证逻辑,最后返回一个UserDetails对象。
7.自定义过滤器,拦截并验证其他所有请求路径
这里只是实现了最简单的一个认证搭建,之后还有权限的操作。
8.开启权限
在配置类上添加@EnableMethodSecurity注解开启权限验证
9.在需要添加权限的方法上添加@PreAuthorize(“hasAnyAuthority(‘get’)”)注解
10.设置权限列表信息