密码加盐思路

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 自定义登录验证逻辑+密码加盐相关推荐

  1. Spring Security自定义登录验证及登录返回结果

    Spring Security自定义登录验证及登录返回结果 一.功能描述 二.处理逻辑 简单流程 自定义UserDetails 自定义UserDetailsDAO 自定义UserDetailsServ ...

  2. Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离

    在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...

  3. Jeesite单点登录集成Cas另加自定义登录验证

    Jeesite单点登录集成Cas另加自定义登录验证 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台. Cas主要是用来解决多应用之 ...

  4. 自定义request_Spring Security 自定义登录认证(二)

    一.前言 本篇文章将讲述Spring Security自定义登录认证校验用户名.密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Se ...

  5. 【SpringSSM项目】搏击俱乐部 使用邮箱进行登录注册 密码加盐加密

    在注册页面使用邮箱进行注册,注册后发送带有确认码的邮件到邮箱中,通过邮件确认注册 编写数据库 登录注册需要使用到用户表 table userinfo 包含 账号状态 用户名 邮箱 密码 头像 过期时间 ...

  6. Django之使用自定义用户表(AbstractUser)/自定义登录验证(jwt)/获取当前登录用户

    基本步骤: 一.自定义用户表: 1.自定义的用户表继承AbstractUser: 2.settings.py添加配置,指向用户表:AUTH_USER_MODEL = 'myUser.Account'( ...

  7. 关闭Spring security的登录验证

    目的关闭Spring security 默认登录页 Springboot 2.x关闭需要在启动类上排除SecurityAutoConfiguration和ManagementWebSecurityAu ...

  8. (二)Spring Security自定义登录成功或失败处理器

    目录 一:创建登录成功处理器 二:创建登录失败处理器 三:添加处理器 三. 项目地址 我们接着上一章 Spring Security最简单的搭建,进行开发 LoginSuccessHandler 和L ...

  9. Spring Security BCryptPasswordEncoder 密码加盐

    Spring Security BCryptPasswordEncoder 密码加盐 引入spring-boot-starter-security 的Jar包 <dependency>&l ...

最新文章

  1. 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法
  2. matlab练习程序(简单图像融合)
  3. Mac 录制视频,并转为GIF格式
  4. 符合语言习惯的Python优雅编程技巧
  5. C++的头文件和实现文件分别写什么
  6. fastlane use_legacy_build_api true
  7. 第一章:第三课 选择器-状态伪类选择器[四]
  8. Part 1——使用 Go Modules
  9. c语言指针知识点小结,C语言指针知识点总结
  10. vb6.0动态加载odbc驱动(mysql数据源)_vb教程之在VB中动态加载ODBC数据源
  11. 计算机专业考研入坑详解(持续更新)
  12. 十六进制的字符对照表
  13. java oa开发_oa开发方案
  14. Silktest试用笔记
  15. PAT A1038 Recover the Smallest Number ——醉里挑灯看剑
  16. 中文 NLP(7) -- CTB语义组块说明
  17. endnote的enl文件格式_endnoteenl文件丢失(一步简单还原丢失文件)
  18. 入力禁则文字check
  19. Android Notification详解【郭霖公众号推荐】
  20. 可以自主学习游动的仿生“机械鱼”

热门文章

  1. BT问题调试 -- HFP(AT指令)
  2. python接口返回状态码,Python脚本接口返回正常,状态码405
  3. 丁苯橡胶价格跌势有所放缓
  4. 超成功人士都有哪些好习惯值得借鉴?
  5. iterm2隐藏标题栏
  6. JavaFX的MVC框架
  7. MTK Android User版本实现 root 功能 可进行APK的删减 和 系统img的替换
  8. 【搜索】各种各样的搜索方法
  9. 4.5G Evolution助力商业腾飞
  10. PHP对于数据库的基本操作——插入