SpringBoot Security 自定义登录验证逻辑+密码加盐
密码加盐思路
JAVA 加盐加密方法_Teln_小凯的博客-CSDN博客
盐加密方法
@ApiOperation(value = "002-加密")@PreAuthorize("hasAuthority('sys:app:all')")@GetMapping(value = "/encodePassword")public HttpResult encodePassword(String password,String salt){String pwd = Md5Utils.md5Password(password,salt);pwd= new BCryptPasswordEncoder().encode(pwd);return HttpResult.oktoData(pwd);}
调用得到密文
数据存盐和密文
下面开始修改从数据库读取,整体架构在下面这个基础上修改
springboot security jwt restful_Teln_小凯的博客-CSDN博客
读取数据库的密码、权限和盐
重写密码加盐的验证
package com.java.core.web.security;import com.java.core.web.utils.Md5Utils;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;/*** 身份验证提供者*/
public class JwtAuthenticationProvider extends DaoAuthenticationProvider {public JwtAuthenticationProvider(UserDetailsService userDetailsService) {setUserDetailsService(userDetailsService);setPasswordEncoder(new BCryptPasswordEncoder());}@Overridepublic Authentication authenticate(Authentication authentication) throws AuthenticationException {// 可以在此处覆写整个登录认证逻辑return super.authenticate(authentication);}@Overrideprotected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication)throws AuthenticationException {// 可以在此处覆写密码验证逻辑//super.additionalAuthenticationChecks(userDetails, authentication);if (authentication.getCredentials() == null) {throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));} else {String presentedPassword = authentication.getCredentials().toString();presentedPassword=Md5Utils.md5Password(presentedPassword,((JwtUserDetails)userDetails).getSalt());if (!new BCryptPasswordEncoder().matches(presentedPassword, userDetails.getPassword())) {throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));}}}}
SpringBoot Security 自定义登录验证逻辑+密码加盐相关推荐
- Spring Security自定义登录验证及登录返回结果
Spring Security自定义登录验证及登录返回结果 一.功能描述 二.处理逻辑 简单流程 自定义UserDetails 自定义UserDetailsDAO 自定义UserDetailsServ ...
- Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离
在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...
- Jeesite单点登录集成Cas另加自定义登录验证
Jeesite单点登录集成Cas另加自定义登录验证 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台. Cas主要是用来解决多应用之 ...
- 自定义request_Spring Security 自定义登录认证(二)
一.前言 本篇文章将讲述Spring Security自定义登录认证校验用户名.密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Se ...
- 【SpringSSM项目】搏击俱乐部 使用邮箱进行登录注册 密码加盐加密
在注册页面使用邮箱进行注册,注册后发送带有确认码的邮件到邮箱中,通过邮件确认注册 编写数据库 登录注册需要使用到用户表 table userinfo 包含 账号状态 用户名 邮箱 密码 头像 过期时间 ...
- Django之使用自定义用户表(AbstractUser)/自定义登录验证(jwt)/获取当前登录用户
基本步骤: 一.自定义用户表: 1.自定义的用户表继承AbstractUser: 2.settings.py添加配置,指向用户表:AUTH_USER_MODEL = 'myUser.Account'( ...
- 关闭Spring security的登录验证
目的关闭Spring security 默认登录页 Springboot 2.x关闭需要在启动类上排除SecurityAutoConfiguration和ManagementWebSecurityAu ...
- (二)Spring Security自定义登录成功或失败处理器
目录 一:创建登录成功处理器 二:创建登录失败处理器 三:添加处理器 三. 项目地址 我们接着上一章 Spring Security最简单的搭建,进行开发 LoginSuccessHandler 和L ...
- Spring Security BCryptPasswordEncoder 密码加盐
Spring Security BCryptPasswordEncoder 密码加盐 引入spring-boot-starter-security 的Jar包 <dependency>&l ...
最新文章
- 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法
- matlab练习程序(简单图像融合)
- Mac 录制视频,并转为GIF格式
- 符合语言习惯的Python优雅编程技巧
- C++的头文件和实现文件分别写什么
- fastlane use_legacy_build_api true
- 第一章:第三课 选择器-状态伪类选择器[四]
- Part 1——使用 Go Modules
- c语言指针知识点小结,C语言指针知识点总结
- vb6.0动态加载odbc驱动(mysql数据源)_vb教程之在VB中动态加载ODBC数据源
- 计算机专业考研入坑详解(持续更新)
- 十六进制的字符对照表
- java oa开发_oa开发方案
- Silktest试用笔记
- PAT A1038 Recover the Smallest Number ——醉里挑灯看剑
- 中文 NLP(7) -- CTB语义组块说明
- endnote的enl文件格式_endnoteenl文件丢失(一步简单还原丢失文件)
- 入力禁则文字check
- Android Notification详解【郭霖公众号推荐】
- 可以自主学习游动的仿生“机械鱼”