SpringBoot+Spring Security基于内存用户认证的实现

 更新时间:2024年11月27日 10:14:43   作者:忧伤夏天的风  
本文介绍了SpringBoot+Spring Security基于内存用户认证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、Spring Security框架

1. 框架简介

官方介绍:Spring Security是一个功能强大且可高度自定义的身份验证和访问控制框架。它是保护基于Spring的应用程序的事实标准。 Spring Security是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring Security的真正强大之处在于它可以轻松扩展以满足自定义要求。

Spring Security是一个为基于Spring的企业应用系统提供声明式的安全访问控制解决方式的安全框架(简单说是对访问权限进行控制),应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。Spring Security的主要核心功能为 认证和授权,所有的架构也是基于这两个核心功能去实现的。

  • 用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。
  • 用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

特征:

  • 对身份验证和授权的全面和可扩展的支持
  • 防止会话固定,点击劫持,跨站点请求伪造等攻击
  • Servlet API集成
  • 可选与Spring Web MVC集成

2. 框架原理

想要对对Web资源进行保护,最好的办法莫过于Filter,要想对方法调用进行保护,最好的办法莫过于AOP。所以Spring Security在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问,从而实现安全。

Spring Security 框架的主要过滤器(Filter) : 

  • WebAsyncManagerIntegrationFilter 
  • SecurityContextPersistenceFilter 
  • HeaderWriterFilter 
  • CorsFilter 
  • LogoutFilter
  • RequestCacheAwareFilter
  • SecurityContextHolderAwareRequestFilter
  • AnonymousAuthenticationFilter
  • SessionManagementFilter
  • ExceptionTranslationFilter
  • FilterSecurityInterceptor
  • UsernamePasswordAuthenticationFilter
  • BasicAuthenticationFilter

  Spring Security框架的核心组件:

  • SecurityContextHolder:提供对SecurityContext的访问
  • SecurityContext:持有Authentication对象和其他可能需要的信息
  • AuthenticationManager 其中可以包含多个AuthenticationProvider
  • ProviderManager对象为AuthenticationManager接口的实现类
  • AuthenticationProvider 主要用来进行认证操作的类 调用其中的authenticate()方法去进行认证操作
  • Authentication:Spring Security方式的认证主体
  • GrantedAuthority:对认证主题的应用层面的授权,含当前用户的权限信息,通常使用角色表示
  • UserDetails:构建Authentication对象必须的信息,可以自定义,可能需要访问DB得到
  • UserDetailsService:通过username构建UserDetails对象,通过loadUserByUsername根据userName获取UserDetail对象 (可以在这里基于自身业务进行自定义的实现  如通过数据库,xml,缓存获取等)  

二、SpringBoot 整合Spring Security

1. 项目环境

(1)JDK版本:1.8

(2)Spring Boot:2.1.2.RELEASE

(3)Spring Security 5.1.3

(4)IntelliJ IDEA 2016.3.4

2. 添加依赖并配置

在pom.xml文件中添加Spring Security的依赖:

<!--Spring Security-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency

在application.yml中配置Spring Security的用户名密码:

server:
  port: 8082

# spring security
spring:
    security:
        user:
          name: ouyang
          password: 123456

3. 编写Controller

package com.oycbest.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @Author: oyc
 * @Date: 2019/1/29 10:49
 * @Description: Hello 测试控制类
 */
@RestController
public class HelloController {
    @GetMapping("hello")
    public String hello(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return "hello";
    }
}

三、测试效果

到此这篇关于SpringBoot+Spring Security基于内存用户认证的实现的文章就介绍到这了,更多相关SpringBoot Spring Security内存用户认证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring AOP 的组成和实现

    Spring AOP 的组成和实现

    这篇文章主要介绍了Spring AOP 的组成和实现,AOP 是一种思想,Spring AOP 是这种思想的具体实现,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Java利用布隆过滤器实现快速检查元素是否存在

    Java利用布隆过滤器实现快速检查元素是否存在

    布隆过滤器是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。本文就来详细说说实现的方法,需要的可以参考一下
    2022-10-10
  • 解决rocketmq-spring-boot-starter导致的多消费者实例重复消费问题

    解决rocketmq-spring-boot-starter导致的多消费者实例重复消费问题

    这篇文章主要介绍了解决rocketmq-spring-boot-starter导致的多消费者实例重复消费问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • tk-mybatis 的使用方法详解

    tk-mybatis 的使用方法详解

    tkmybatis是在mybatis框架的基础上提供了很多工具,本文就详细的介绍了一下tk-mybatis 的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • springboot项目中引入本地依赖jar包并打包到lib文件夹中

    springboot项目中引入本地依赖jar包并打包到lib文件夹中

    这篇文章主要介绍了springboot项目中引入本地依赖jar包,如何打包到lib文件夹中,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • java书店系统毕业设计 用户模块(3)

    java书店系统毕业设计 用户模块(3)

    这篇文章主要介绍了java书店系统毕业设计,第三步系统总体设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Mybatis源码分析之插件模块

    Mybatis源码分析之插件模块

    今天给大家带来的是关于Mybatis的相关知识,文章围绕着Mybatis插件模块展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java+TestNG接口自动化入门详解

    Java+TestNG接口自动化入门详解

    本文主要介绍了Java+TestNG接口自动化入门,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • IDEA GIT 忽略文件的最佳方式推荐

    IDEA GIT 忽略文件的最佳方式推荐

    这篇文章主要介绍了IDEA GIT 忽略文件的最佳方式推荐,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Java语言实现Blowfish加密算法完整代码分享

    Java语言实现Blowfish加密算法完整代码分享

    这篇文章主要介绍了Java语言实现Blowfish加密算法完整代码分享,简单介绍了blowfish加密算法,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11

最新评论