浅聊一下Spring Security的使用方法
作者:Jimmy
本文,我们来说说 Spring Security
。
spring security 是什么?
Spring Security
是一个基于 Spring
框架的安全框架,提供了一套安全性认证和授权的解决方案,用于保护 Web
应用程序和服务。
Spring Security 提供了多种身份验证和授权方式,例如基于表单的身份验证和授权方式、基于 HTTP
基本身份验证、基于 OAuth2
的身份验证等。
Spring Security 还提供了许多常见的安全特性,比如防止跨站点请求伪造 CSRF
攻击、防止点击劫持等。
CSRF -> Cross-Site Request Forgery
Spring Security 核心概念
它有三个核心概念,如下:
概念 | 说明 |
---|---|
Principle | 代表用户的对象 Principle(User) ,不仅指人类,还包括一切可以用于验证的设备。 |
Authority | 代表用户的角色 Authority(Role) ,每个用户都应该有一种角色,例如管理员或者是会员。 |
Permission | 代表授权,复杂的应用环境需要对角色的权限进行表述。 |
Authority
和 Permission
是两个完全独立的概念,两者没有必然的联系。它们直接需要通过配置进行关联,可以是自己定义的各种关系。
案例
首先,我们添加依赖:
<!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
我们启动项目,可以在控制台上看到动态生成的访问密码:
默认的用户名是 user
这个时候,我们在浏览器上访问用户列表接口 http://localhost:8080/api/user/
,会自动跳转到登陆页面。
输入默认用户名 user
和上图中动态生成的密码 3019398a-a10f-43e9-9e21-199f6892f689
,登陆成功后,自动跳转到接口 http://localhost:8080/api/user/
。
当然,我们也可以自定用户名和密码,不然每次启动项目后,密码都需要重新生成一遍,着实尴尬。
自定义用户名和密码
方式一: 在 application.properties
文件内配置:
spring.security.user.name=jimmy spring.security.user.password=123456
重启项目,输入用户名 jimmy
,密码 123456
即可授权登陆。
如果不生效,请清空浏览器上的缓存
方式二: Java 上配置用户名和密码:
在包 config
下,新建文件 SecurityConfig.java
,如下:
package com.launch.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); // 用户存在内存中 auth.inMemoryAuthentication() .withUser("jimmy") .password(encoder.encode("111111")) .roles("admin") .and() .withUser("kimmy") .password(encoder.encode("222222")) .roles("user"); } @Bean PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
注意,密码需要加密,如 encoder.encode("222222")
。
重启项目,清空浏览器缓存,输入用户名/密码 - kimmy / 222222
或者 jimmy / 111111
即可登陆。
PostMan 上统一设定凭证
在现实的开发中,我们使用 Postman
工具调试的多点,那么我们怎么操作呢?
第一步,设定环境变量,这里设置 username
和 password
就行了:
这里设置的变量名为 username 和 password
然后,我们在接口上配置认证信息,比如这里的获取用户列表的接口:
选择 Type 为 Basic Auth,填写上面第一步👆设定的变量
{{username}}
和{{password}}
到此这篇关于浅聊一下Spring Security的使用方法的文章就介绍到这了,更多相关Spring Security用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!