Springboot简单功能示例-4 自定义加密进行登录验证
springboot-sample
介绍
软件架构(当前发行版使用)
安装教程
git clone --branch 4.自定义加密进行登录验证 git@gitee.com:simen_net/springboot-sample.git
功能说明
使用bcprov-jdk18on的sm2加密算法对用户密码进行签名及认证
发行版说明
自定义加密进行登录验证
使用SM2库对密码进行签名验证
- 新建自定义加密编码器Sm2PasswordEncoder.java,使用KeyUtils中的SM2加密对象进行签名验证:
SM2_OBJ.verifyHex(rawPassword.toString(),encodedPassword,KeyUtils.STR_UUID) - 在SystemController中的
@GetMapping("/login")中将SPRING_SECURITY_LAST_EXCEPTION的错误消息注入login.ftl - 新建JwtUserDetails和JwtUserDetailsService类,重写用户验证对象的实现和用户验证功能实现
- 在WebSecurityConfig中,定义
DaoAuthenticationProvider使用Sm2PasswordEncoder编码器、JwtUserDetailsService用户验证服务
代码逻辑说明
- 在JwtUserDetailsService中可以从数据库中读取用户注册信息
- 在代码中硬注册simen、admin两个用户,强制密码签名为
SM2_OBJ.signHex("123456", KeyUtils.STR_UUID) - 当用户不存在时
return new JwtUserDetails();
- 在代码中硬注册simen、admin两个用户,强制密码签名为
- 在Sm2PasswordEncoder.java中的
public boolean matches(CharSequence rawPassword, String encodedPassword)- 判断
rawPassword或者encodedPassword为空,则throw new UsernameNotFoundException("用户不存在"); - 校验密码签名false时
throw new BadCredentialsException("账号密码验证失败") - 抛出异常的目的是为了在login.ftl中显示正确的错误消息
- 判断
Springboot简单功能示例-4 自定义加密进行登录验证的更多相关文章
- Java 自定义注解在登录验证的应用
java注解 从 JDK 5开始,Java 增加了注解的新功能,注解其实是代码里面的特殊标记,这些标记可以在编译.类加载和运行时被读取,在不改变代码原有逻辑下,给源文件嵌入注解信息.再通过返回获取注解 ...
- struts2学习(6)自定义拦截器-登录验证拦截器
需求:对登录进行验证,用户名cy 密码123456才能登录进去: 登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...
- 最简单的Servlet继承HttpServlet查询数据库登录验证
<%-- Created by IntelliJ IDEA. User: yunqing Date: 2017-12-06 Time: 9:11 To change this template ...
- 关于对springboot程序配置文件使用jasypt开源工具自定义加密
一.前言 在工作中遇到需要把配置文件加密的要求,很容易就在网上找到了开源插件 jasypt (https://github.com/ulisesbocchio/jasypt-spring-boot# ...
- anyRTC SDK 5月迭代:优化自定义加密功能,让通信更安全
anyRTC SDK 5月上新,新增多种加密类型,让实时音视频通信更安全:新增移动端推流支持1080P分辨率的支持:此外还对事件上报.日志详情.数据统计.网络传输等多项功能进行了优化改进. 以下为更新 ...
- 微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—下篇
在上一篇文章中, 我介绍了企业库Cryptographer模块的一些重要类,同时介绍了企业库Cryptographer模块为我们提供的扩展接口,今天我就要根据这些 接口来进行扩展开发,实现2个加密解密 ...
- dubbo+zookeeper+springboot简单示例
目录 dubbo+zookeeper+springboot简单示例 zookeeper安装使用 api子模块 生产者producer 消费者consumer @(目录) dubbo+zookeeper ...
- 记录一次简单的springboot发送邮件功能
场景:经常在我们系统中有通过邮件功能找回密码,或者发送生日祝福等功能,今天记录下springboot发送邮件的简单功能 1.引入maven <!-- 邮件开发--><dependen ...
- SpringBoot整合SpringSecurity示例实现前后分离权限注解
SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证 作者:Sans_ juejin.im/post/5da82f066fb9a04e2a73daec 一.说 ...
- SpringBoot集成Spring Security(4)——自定义表单登录
通过前面三篇文章,你应该大致了解了 Spring Security 的流程.你应该发现了,真正的 login 请求是由 Spring Security 帮我们处理的,那么我们如何实现自定义表单登录呢, ...
随机推荐
- 使用CNI网络插件(calico)实现docker容器跨主机互联
目录 一.系统环境 二.前言 三.CNI网络插件简介 四.常见的几种CNI网络插件对比 五.Calico网络之间是如何通信的 六.配置calico让物理机A上的docker容器c1可以访问物理机B上的 ...
- Android Studio中SQLite的使用,主要介绍sqlite插入和读出图片(ViewBinder)的操作方法
sqlite简介 本人最近在写一个小的安卓项目,开发app过程中用到了安卓自带的sqlite.本文主要对sqlite图片操作进行介绍,其他存入文本之类的操作和普通数据库一样,众所周知,sqlite是一 ...
- 【TVM模型编译】1. onnx2relay.md
上一篇介绍了onnx模型在tvm中优化的总体流程. 在这一篇中,介绍onnx模型到relay模型的转换流程,主要涉及了以下几个方面: onnx算子到relay算子转换 relay算子实现 这一篇介绍o ...
- global average pooling
首先需要对深度网络中常见的pooling方式,以及全连接层有大致的了解.(此处略过不提.) paper: Network in Network fully connected layer 的缺点 在N ...
- Linux Nacos2.2.0版本集群搭建,常见报错问题解决
准备: 服务器,nacos,mysql,nginx,java,maven Nacos 官网:https://nacos.io 下载地址github:https://github.com/alibaba ...
- 逍遥自在学C语言 | 函数初级到高级解析
前言 函数是C语言中的基本构建块之一,它允许我们将代码组织成可重用.模块化的单元. 本文将逐步介绍C语言函数的基础概念.参数传递.返回值.递归以及内联函数和匿名函数. 一.人物简介 第一位闪亮登场,有 ...
- SQL Server 数据库字符串分割函数
SQL Server 数据库字符串分割函数,源代码如下: ALTER FUNCTION [dbo].[f_split] ( @SourceStr VARCHAR(MAX), -- 源字符串 @Spli ...
- hexo博客yilia主题_缺失模块_解决方案
hexo博客yilia主题,左侧栏目有一个全部文章的按钮,刚开始开始报错缺失模块,如下图: 我解决了这个问题着实不容易饶了弯路,但是跟着提示步骤,其实很简单,走起: 1.查看node版本 win键+R ...
- 我是如何组织 Go 代码的(目录结构 依赖注入 wire)
背景 对于大多数 Gopher 来说,编写 Go 程序会直接在目录建立 main.go,xxx.go,yyy.go-- 不是说不好,对于小型工程来说,简单反而简洁明了,我也提倡小工程没必要整一些花里胡 ...
- 运维自动化工具--Ansible
运维自动化工具Ansible 1. ansible安装 rocky安装 需要先安装 enel源 # yum install -y epel-release 然后再安装ansible # yum ins ...