java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Security用法

浅聊一下Spring Security的使用方法

作者:Jimmy

Spring Security 是一个基于 Spring 框架的安全框架,提供了一套安全性认证和授权的解决方案,用于保护 Web 应用程序和服务,接下来小编就和大家聊聊Spring Security,感兴趣的小伙伴跟着小编一起来看看吧

本文,我们来说说 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>

我们启动项目,可以在控制台上看到动态生成的访问密码:

启动项目.png

默认的用户名是 user 

这个时候,我们在浏览器上访问用户列表接口 http://localhost:8080/api/user/ ,会自动跳转到登陆页面。

登陆页面.png

输入默认用户名 user 和上图中动态生成的密码 3019398a-a10f-43e9-9e21-199f6892f689 ,登陆成功后,自动跳转到接口 http://localhost:8080/api/user/

获取用户列表.png

当然,我们也可以自定用户名和密码,不然每次启动项目后,密码都需要重新生成一遍,着实尴尬。

自定义用户名和密码

方式一: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 就行了:

设置变量.png

这里设置的变量名为 username 和 password

然后,我们在接口上配置认证信息,比如这里的获取用户列表的接口:

用户凭证设置.png

选择 Type 为 Basic Auth,填写上面第一步👆设定的变量 {{username}} {{password}}

到此这篇关于浅聊一下Spring Security的使用方法的文章就介绍到这了,更多相关Spring Security用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文