浅聊一下Spring Security的使用方法

 更新时间:2023年08月18日 09:44:39   作者: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用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jedis操作Redis数据库的方法

    Jedis操作Redis数据库的方法

    这篇文章主要为大家详细介绍了Jedis操作Redis数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 详解JVM之运行时常量池

    详解JVM之运行时常量池

    JVM在运行的时候会对class文件进行加载,链接和初始化的过程。class文件中定义的常量池在JVM加载之后会发生什么神奇的变化呢?快来看一看吧。
    2021-06-06
  • Eclipse配置tomcat发布路径的问题wtpwebapps解决办法

    Eclipse配置tomcat发布路径的问题wtpwebapps解决办法

    这篇文章主要介绍了Eclipse配置tomcat发布路径的问题wtpwebapps解决办法的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java基于fork/koin类实现并发排序

    Java基于fork/koin类实现并发排序

    这篇文章主要介绍了Java基于fork/koin类实现并发排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    这篇文章主要基于Servlet+JSP+JavaBean开发模式实现JavaWeb用户登录注册功能实例代码,非常实用,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-05-05
  • Spring概述和快速构建的方式

    Spring概述和快速构建的方式

    Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架),Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情,本文给大家介绍spring概述和快速构建方式,一起看看吧
    2021-06-06
  • java中使用sax解析xml的解决方法

    java中使用sax解析xml的解决方法

    本篇文章介绍了,在java中使用sax解析xml的解决方法。需要的朋友参考下
    2013-05-05
  • Java Arrays.sort和Collections.sort排序实现原理解析

    Java Arrays.sort和Collections.sort排序实现原理解析

    这篇文章主要介绍了Java Arrays.sort和Collections.sort排序实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Java局部打印效果不同问题解决方案

    Java局部打印效果不同问题解决方案

    这篇文章主要介绍了Java局部打印效果不同问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • SpringBoot可视化接口开发工具magic-api的简单使用教程

    SpringBoot可视化接口开发工具magic-api的简单使用教程

    作为Java后端开发,平时开发API接口的时候经常需要定义Controller、Service、Dao、Mapper、XML、VO等Java对象。有没有什么办法可以让我们不写这些代码,直接操作数据库生成API接口呢?今天给大家推荐一款工具magic-api,来帮我们实现这个小目标!
    2021-06-06

最新评论