<s:authentication-provider user-service-ref="userDetailsService">
<!-- 可设置hash使用sha1或md5散列密码后再存入数据库 -->
<s:password-encoder hash="md5" >
<s:salt-source user-property="username"/>
</s:password-encoder>
</s:authentication-provider>
这里设置成username为salt,进行md5加密。
那么在用户注册的时候应该把密码进行加密。可以用Md5PasswordEncoder这个类,是springsecurity内置的一个类。
Md5PasswordEncoder md5 = new Md5PasswordEncoder();
System.out.println( md5.encodePassword("admin", "admin"));
其中encodePassword()函数的第一个参数是密码,第二个参数是salt值。
那么encodePassword()函数是怎么样吧rawPass和salt值结合起来的呢?
找了一下源代码发现
protected String mergePasswordAndSalt(String password, Object salt, boolean strict) {
if (password == null) {
password = "";
}
if (strict && (salt != null)) {
if ((salt.toString().lastIndexOf("{") != -1) || (salt.toString().lastIndexOf("}") != -1)) {
throw new IllegalArgumentException("Cannot use { or } in salt.toString()");
}
}
if ((salt == null) || "".equals(salt)) {
return password;
} else {
return password + "{" + salt.toString() + "}";
}
}
在调用此函数时,也就是返回 rawPass{salt}。Md5PasswordEncoder是将strict参数设置为false。那么就不会检查salt值中是否含有 '{' 和 '}' 。我试了一下,如果salt中含有大括号的话,加密过后的密封是无法使用的。就是说用户虽然注册了,但是无法登陆。(这个可能和加密算法有关?)
版本:2.0.5
分享到:
相关推荐
Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager
该资源是springsecurity+oauth2+jwt实现的单点登录demo,模式为授权码模式,实现自定义登录页面和自定义授权页面。应用数据存在内存中或者存在数据库中(附带数据库表结构),token存储分为数据库或者Redis。demo...
全注解 spring boot +spring security + thymeleaf+mybatis+druid+mysql+bootstrap 框架。 带数据库脚本和说明文件
Springboot整合Spring security+Oauth2+JWT搭建认证服务器,网关,微服务之间权限认证及授权
yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端分离的商城系统, 包含分类、sku、运费模板、素材库、小程序直播、拼团、砍价、商户管理、 秒杀、...
基于当前流行技术组合的前后端分离商城系统:SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端分离的商城系统, 包含商城、sku、运费模板、素材库、小程序直播、拼团、砍价、商户管理、 秒杀、优惠券...
全注解 spring boot +spring security + mybatis+druid+thymeleaf+jsp+mysql+bootstrap 支持thymeleaf和jsp并存 全注解 spring boot spring security thymeleaf+jsp同时使用 mybatis druid mysql bootstrap 访问 ...
基于spring security + oauth2 + jwt ,可优雅集成第三方登录.zip
MD5+AES加密解密demo,将任意密钥转为16位长度MD5编码,再使用MD5编码进行AES加密
SpringBoot+SpringSecurity+JWT+MybatisPlus实现基于注解的权限验证,可根据注解的格式不同,做到角色权限控制,角色加资源权限控制等,粒度比较细化。 @PreAuthorize("hasAnyRole('ADMIN','USER')"):具有admin或...
SpringBoot2.0+SpringSecurity5.1.5.RELEASE+MybatisPlus3.1.1的基础登陆代码 登陆账号123 密码123 密码使用springsecruity提供的加密方式加密 前端使用thymeleaf+bootstrap 提供登陆后成功页面 sql文件在db下 仅供...
开源测试项目:spring mvc+springsecurity3+ehcache+bootstrap+mysql 内附MySQL表,直接导入就可运行 效果图请移步:http://blog.csdn.net/yangxuan0261/article/details/10053947
Spring Security 3.1 +Spring +Servlet+JdbcTemplate 自己找的资料,并开发成功
SpringSecurity教程+视频+源码+资料.txt
SpringSecurity+OAuth2+JWT分布式权限控制
SpringSecurity.md
SpringCloud+SpringBoot+OAuth2+Spring Security+Redis实现的微服务统一认证授权
后端使用SpringBoot框架进行业务逻辑开发,利用Spring Security实现权限控制。数据库采用MySQL进行数据存储,使用MyBatis进行数据访问。 权限控制模块设计包括用户、角色和权限三个主要模块。用户模块用于管理用户...
springcloud+springboot+springmvc+spring+springsecurity+redis+全套java面试题