首页 > 其他分享 >Springboot简单功能示例-4 自定义加密进行登录验证

Springboot简单功能示例-4 自定义加密进行登录验证

时间:2023-09-18 10:55:24浏览次数:43  
标签:加密 Springboot 自定义 验证 示例 SM2 用户

springboot-sample

介绍

  springboot简单示例-自定义加密进行登录验证 跳转到发行版

软件架构(当前发行版)

  • Springboot3.1.3
  • hutool
  • bcprov-jdk18on

安装教程

git clone --branch 自定义加密进行登录验证 [email protected]:simen_net/springboot-sample.git

主要功能

使用SM2库对密码进行签名验证

    1. 新建自定义加密编码器Sm2PasswordEncoder.java,使用KeyUtils中的SM2加密对象进行签名验证:SM2_OBJ.verifyHex(rawPassword.toString(),encodedPassword,KeyUtils.STR_UUID)
    2. SystemController中的@GetMapping("/login")中将SPRING_SECURITY_LAST_EXCEPTION的错误消息注入login.ftl
    3. 新建JwtUserDetailsJwtUserDetailsService类,重写用户验证对象的实现和用户验证功能实现
    4. WebSecurityConfig中,定义DaoAuthenticationProvider使用Sm2PasswordEncoder编码器、JwtUserDetailsService用户验证服务

代码逻辑说明

    1. JwtUserDetailsService中可以从数据库中读取用户注册信息
      • 在代码中硬注册simen、admin两个用户,强制密码签名为SM2_OBJ.signHex("123456",KeyUtils.STR_UUID)
      • 当用户不存在时return new JwtUserDetails();
    1. Sm2PasswordEncoder.java中的public boolean matches(CharSequence rawPassword, String encodedPassword)
      • 判断rawPassword或者encodedPassword为空,则throw new UsernameNotFoundException("用户不存在");
      • 校验密码签名false时throw new BadCredentialsException("账号密码验证失败")
      • 抛出异常的目的是为了在login.ftl中显示正确的错误消息

标签:加密,Springboot,自定义,验证,示例,SM2,用户
From: https://www.cnblogs.com/xiuligong-net/p/17711303.html

相关文章

  • 自定义Feign的配置
        ......
  • Springboot简单功能示例-3 实现基本登录验证
    springboot-sample介绍springboot简单示例跳转到发行版软件架构(当前发行版)Springboot3.1.3hutoolbcprov-jdk18on安装教程gitclone--branch基本登录验证[email protected]:simen_net/springboot-sample.git主要功能增加登录验证功能在pom.xml中加入sprin......
  • destoon添加自定义字段报错INSERT INTO [pre]fields
     今天做destoon开发时候在后台添加自定义字段时候出现:destoon7.0-8.0添加自定义字段报错MySQLQuery:INSERTINTO[pre]fields(tb,name,title,note,type,length,html,default_value,option_value,width,height,input_limit,addition,search,display,front)VALUES('article_21',......
  • 使用Python的requests库自定义请求
    importrequestsfromrequestsimportRequest,Sessionurl="http://challenge-d590d34746e26bc5.sandbox.ctfhub.com:10800/index.php"headers={"user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,lik......
  • go脚本示例
    以下是Go脚本的示例,涵盖了不同的主题和用途:Hello,World!packagemainimport"fmt"funcmain(){fmt.Println("Hello,World!")}打印系统时间packagemainimport("fmt""time")funcmain(){currentTime:=time.Now()......
  • springboot中配置类型转换,设置开启矩阵变量
    2023-09-17packagecom.hh.springboot05.config;importcom.hh.springboot05.bean.Pet;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.core.convert.converter.Conver......
  • 统信服务器1050a自定义镜像制作02
    原文链接:统信服务器1050a自定义镜像制作02hello,大家晚上好啊,今天为大家带来如何制作统信uos服务器操作系统1050a的第二篇文章,基于centos8自定义ISO镜像来学习相对来说是比较快的,今天介绍第二种方法,如何为标准ISO镜像中增加新的rpm包,并在安装系统dde桌面的时候进行安装,操作相对来说......
  • uniapp项目实践总结(十六)自定义下拉刷新组件
    导语:在日常的开发过程中,我们经常遇到下拉刷新的场景,很方便的刷新游览的内容,在此我也实现了一个下拉刷新的自定义组件。目录准备工作原理分析组件实现实战演练内置刷新案例展示准备工作在components新建一个q-pull文件夹,并新建一个q-pull.vue的组件;按照前面文章所说......
  • 深入探讨Spring Data JDBC的自定义映射
    前言SpringDataJDBC是一个轻量级的JDBC框架,它提供了一种简单的方式来访问关系型数据库。在使用SpringDataJDBC时,我们通常会使用默认的映射策略来将Java对象映射到数据库表中的行。但是,有时候我们需要自定义映射策略来满足特定的需求。本文将深入探讨SpringDataJDBC的自定义......
  • 深入探讨Spring Data JPA的查询示例
    前言SpringDataJPA是一个非常强大的ORM框架,它提供了许多方便的查询方法,使得我们可以轻松地进行数据库操作。本文将深入探讨SpringDataJPA的查询示例,帮助读者更好地理解和使用该框架。基本查询SpringDataJPA提供了一些基本的查询方法,如findById、findAll、save等。这些方法......