说明
(1)JDK版本:1.8
(2)Spring Boot 2.0.6
(3)Spring Security 5.0.9
(4)Spring Data JPA 2.0.11.RELEASE
(5)hibernate5.2.17.Final
(6)MySQLDriver 5.1.47
(7)MySQL 8.0.12
需求缘起
很多时候,我们自己已经有现成的一套系统在运行了,这时候要接入spring security的话,那么难免会碰到一个问题:就是自己设计的密码加密方式和spring security提供的加密方式不一样,那么怎么办呢?所以这里我们要自定义下的加密方式,这个实现起来也是很简单的,以前很多系统是使用的MD5加密的吧,那么这里使用MD5加密进行讲解下。
一、使用MD5加密
1.1 编写MD5加密工具类
既然要采用MD5加密的话,那么就需要有MD5的加密算法,这个Java本身就提供了算法工具类,只是调用的时候,编码会比较多,这里我们编写成一个工具类,类似的代码在网络上也能找到很多类似的MD5加密算法编写:
package com.kfit.config.util;
import java.security.MessageDigest;
/**
* MD5加密工具
*/
public class MD5Util {
private static final String SALT = "wuqian";
public static String encode(String password) {
password = password + SALT;
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
throw new RuntimeException(e);
}
char[] charArray = password.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
}
1.2 自定义加密算法
自定义一个我们自己的加密类,继承PasswordEncoder,实现密码加密和密码匹配方法即可:
package com.kfit.config;
import org.springframework.security.crypto.password.PasswordEncoder;
import com.kfit.config.util.MD5Util;
public class MyPasswordEncoder implements PasswordEncoder{
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return encodedPassword.equals(MD5Util.encode((String)rawPassword));
}
@Override
public String encode(CharSequence rawPassword) {
return MD5Util.encode((String)rawPassword);
}
}
1.3 替换原先的BCryptPasswordEncoder
修改WebSecurityConfig方法:
@Bean
public PasswordEncoder passwordEncoder() {
return new MyPasswordEncoder();
}
整体实现起来还是很简单的,到这里就可以进行重新启动测试了,查看数据库的密码,已经是md5生成的密码方式了,到登录页面进行登录,也是可以登录的,到这里就大功告成了。
历史文章
215.Spring Boot+Spring Security:初体验
216.Spring Boot+Spring Security:基于内存的认证信息
217.Spring Boot+Spring Security:基于内存的角色授权
218.Spring Boot+Spring Security:基于内存数据库的身份认证和角色授权
219.Spring Boot+Spring Security:基于MySQL数据库的身份认证和角色授权
220.Spring Boot+Spring Security:自定义登录页面和构建主页
221.Spring Boot+Spring Security:登出和403处理
222.Spring Boot+Spring Security:动态加载角色
223.Spring Boot+Spring Security:原理1
224.Spring Boot+Spring Security:自定义Filter
246.Spring Boot+Spring Security:页面白名单和获取登录信息
13. Spring Boot+Spring Security:基于URL动态权限n种方案
248.Spring Boot+Spring Security:基于URL动态权限:准备工作
249.Spring Boot+Spring Security:基于URL动态权限:扩展access()的SpEL表达式
250.Spring Boot+Spring Security:基于URL动态权限:自定义AccssDesionManager
251.Spring Boot+Spring Security:基于URL动态权限:自定义Filter
252.Spring Boot+Spring Security:标签sec:authorize的使用
253.Spring Boot+Spring Security:获取用户信息和session并发控制
254.Security注解:@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。
à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
相关推荐
1.Spring Security权限控制 2.结合BCrypt加密 3.thymeleaf模板 4.小型mode,简单明了
security|[授权、认证、加解密、mybatis plus使用](https://github.com/smltq/spring-boot-demo/blob/master/security/HELP.md) mybatis-plus-generator|[基于mybatisplus代码自动生成]...
技术栈:spring boot, spring security, mybatis, mysql, vue, element-ui,axios 前端:绘制界面Login.vue,并封装axios,在plugins/api.js,进行统一的错误处理,然后通过axios调用后台接口获得数据,登录成功之后...
spring security权限管理。 aop日志记录。 4、调度 ====== Spring task, 可以查询已经注册的任务。立即执行一次任务。 5、缓存和Session =========== 注解redis缓存数据,Spring-session和redis实现分布式...
开发基于Spring Boot和Spring Security的权限认证系统可以按照以下步骤进行: 1. 确定需求:明确权限认证系统的功能和特性,比如用户管理、角色管理、权限管理等。 2. 数据库设计:设计数据库表结构,包括用户表、...
java后端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySql 后台系统: 1、这或许是最美的Vue+Element开源后台管理UI 2、带工作流的SpringBoot后台管理项目,一个企业级快速开发...
encrypt-body-spring-boot-starter是对SpringBoot控制器统一的响应体加密与请求体解密的注解处理方式,支持MD5/SHA/AES/DES/RSA。 加密解密支持 可进行加密的方式有: MD5 SHA-224 / 256 / 384 / 512 AES DES ...
Spring Boot 整合 Spring Security 包含认证,授权,加密,验证码,前后端分离,记住密码,自定义组件等
Spring Security:用于处理应用程序的安全性需求,提供了身份验证、授权、加密等功能,保护应用程序免受恶意攻击。 Spring Boot:用于快速构建独立的、可执行的Spring应用程序,简化了Spring应用程序的配置和部署...
SpringBoot整合SpringSecurity简单实现登入登出从零搭建这是SpringSecurity实现登录和登出的一个简单示例,基于 Spring Boot 1.5.6基本实现 : 用户信息存储在数据库中,登陆时从数据库中查询匹配用户信息。...
如果使用@SpringBootApplication或@EnableAutoConfiguration只需将启动程序jar jasypt-spring-boot-starter到您的类路径中, @SpringBootApplication在整个Spring环境中启用可加密属性 将jasypt-spring-boot添加到...
springboot-SpringSecurity0包含两部分代码:首先是博客springboot + mybatis + SpringSecurity实现用户角色数据库管理地址: : 第二个博客springBoot + springSecurity验证密码MD5加密地址: : springboot-Spring...
它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都是做一个权限的安全框架,但是与Spring Security 相比,在于 Shiro 使用了比较简单易懂易于使用的授权方式。...
##使用加密在本地构建 java -jar jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI输入=世界密码= ncsoft算法= PBEWITHSHA256AND128BITAES-CBC-BC 问题 如果遇到问题消息“ java.security....
Spring Boot(Maven)-Spring Security(注释)-JWT / MySql(授权,认证) 入门 需要JDK,弹簧靴,工作机。 先决条件 安装Spring Boot。 在环境变量中配置Java。 它是什么? 使用Spring Boot项目,Spring安全性。 ...
spring security 5用户token信息,从内存存储变为redis存储客户的详细资料由手动在MyAuthorizationServerConfigurerAdapter中配置的,改为使用数据库配置(添加了oauth_client_details表)用户密码加密由md5加密改为...
JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
This project is built using spring boot and thymeleaf templete engine 使用的技术和概念 前端: Thymeleaf模板引擎 Html CSS Java脚本 jQuery的 引导程序 后端: Java 8 Sprint Boot 春天数据jpa MySQL的 ...
它展示了如何为本地和基于云的 (Spring Boot) Web 应用程序安全地存储机密的不同可能性。 此存储库中的每个 Web 应用程序(客户端和配置服务器)都在默认的/actuator端点公开所有 Spring Actuator 端点。 技术领域...
技术上,系统采用了 Spring Boot、Spring Security、Spring Data JPA、MySQL 等后端技术,以及 Thymeleaf、Bootstrap、JavaScript 等前端技术,实现了用户身份验证、权限控制、数据加密等安全机制,保障系统的安全性...