数据库账号密码加密详解及实例
作者:lqh 发布时间:2024-01-22 14:41:43
标签:数据库,账号密码,加密
数据库账号密码加密详解及实例
数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的。如下:
<authentication-manager>
<authentication-provider user-service-ref="userDetailService">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
<beans:bean class="com.sapphire.security.MyPasswordEncoder" id="passwordEncoder">
<beans:constructor-arg value="md5"></beans:constructor-arg>
</beans:bean>
如上述配置文件所示,passwordEncoder才是在spring security对账号加密校验的地方。
spring security在拦截之后,会首先对用户进行查找,通过自己定义的userDetailService来找到对应的用户,然后由框架进行密码的匹配验证。
从userDetailService得到user以后,就会进入到DaoAuthenticationProvider中,这是框架中定义的 ,然后跳入其中的authenticate方法中。
该方法会进行两个检查,分别是
* preAuthenticationChecks : 主要进行的是对用户是否过期等信息的校验,调用的方法在userDetail中有定义的。
* additionalAuthenticationChecks : 这个就是用户名密码验证的过程了。
而PasswordEncoder是我们xml中注入的bean,所以了,我们调用的则是我们自己完成的passwordEncoder
public class MyPasswordEncoder extends MessageDigestPasswordEncoder {
public MyPasswordEncoder(String algorithm) {
super(algorithm);
}
@Override
public boolean isPasswordValid(String encPass, String rawPass, Object salt) {
return encPass.equals(DigestUtils.md5DigestAsHex(rawPass.getBytes()));
}
}
这是我对其实现的一个简单版本,调用的就是spring自带的加密算法,很简单了,当然也可以使用复杂的加密方法,这个就靠自己了
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


猜你喜欢
- 本文实例讲述了Python画柱状统计图操作。分享给大家供大家参考,具体如下:一、工具:python的matplotlib.pyplot 库二
- Golang 是一门非常适合编写网络爬虫的语言,它有着高效的并发处理能力和丰富的网络编程库。下面是一个简单的 Golang 网络爬虫示例:p
- PS: 我的检索是在文章模块下 forum/article第一步:先安装需要的包:pip install django-haystackpi
- Go 中时间格式化的模板const ( ANSIC = "Mon Jan _2 15:04:
- 大家好,我们的git专题已经更新结束了,所以开始继续给大家写一点设计模式的内容。今天给大家介绍的设计模式非常简单,叫做iterator,也就
- 对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL是与空字符串''相同的事。情况并非如此。例如,下述语句是
- 快速排序(QuickSort)是对冒泡排序的一种改进:基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一
- 这两天在整理一些文章,但是文件夹中每个文章没有序号会看起来很乱,所以想着能不能用Python写一个小脚本。于是乎,参考了多方资料,简单写了下
- 最近邻:import cv2import numpy as npdef function(img): height,width,channe
- 本文实例为大家分享了bootstrap实现收缩导航条的具体代码,供大家参考,具体内容如下效果图 贴上我的代码<!DocType htm
- 首先得抛出个重要的前提观点,大屏幕、宽屏幕根本不是为方便“扫视”准备的。所以说以内容为基础的网站设计不用考虑超宽、超大的场景,甚至包括服务类
- 1. 介绍torch.norm()是对输入的tensor求对应的范数。tensor的范数有以下三种:1.1 p-范数1.2 Frobeniu
- PHP ini_set用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,对于
- 1)首先注册一个邮箱,这里以163邮箱为例2)注册之后登录,进行如下修改找到设置,设置一个授权码,授权码的目的仅仅是让你有权限发邮件,但是不
- Dreamweaver 2004 除了可以插入 Flash SWF 動畫、Flash 文字和 Flash 按鈕以外,這次又新增加了一個叫做
- ZeroClipboard.js是一个支持复制和粘贴的JavaScript插件,目前官方已经到2.x的版本了,但不支持IE9以下的浏览器,而
- 本文实例讲述了Python实现的统计文章单词次数功能。分享给大家供大家参考,具体如下:题目是这样的:你有一个目录,放了你一个月的日记,都是
- 本文实例讲述了Python使用type动态创建类操作。分享给大家供大家参考,具体如下:使用type动态创建类动态语言和静态语言最大的不同,就
- 一、前言本篇博客对于文件操作、字典、列表、匿名函数以及sort()等内置函数进行了系统的整理操作,以设计一个学生信息管理系统的形式展示,具体
- 像素是计算机视觉中图像的重要属性。它们是表示图像 * 定空间中光的颜色强度的数值,是图像中数据的最小单位。图像中的像素总数是高度、宽度和通道的