简单来说,Security提供了多种的加密方式,我们只需要通过注入不同的PasswordEncoder的实例对象到Spring容器中,Security就会采用不同的加密方式为我们提供服务

eg:举个栗子,我们采用注入BCryptPasswordEncoder的方式指定密码编辑器

此时Security就会采用该实例对象的加密方式为我们进行密码的加密操作,比如123加密之后就变成了$2a$10$TKMFT4Wm7GkeLNRHbL39Ge5AkccoEgwnXxiDNPyA3nc9t7D.Om7fO

在我们进行登录的时候,security就会将前端接收到的password用该密码编辑器进行加密,加密之后再和数据库查询出来的密码进行比对,如果相同则代表用户认证成功(因此注册的时候记得使用相同的密码编辑器进行加密后再存储密码,否则加密出来后对应不上就会导致认证失败哦!)

简单来说,我们提供什么PasswordEncoder实例,Security就会在认证的时候采用相同的加密方式将传入的password进行加密,然后与数据库查询出来的密码进行比对

DelegatingPasswordEncoder

由于Security为不同的密码加密方式提供了不同的前缀id,比如使用明文存储我们需要使用{noop}将其标注,如{noop}123,代表密码明文存储的123,这样security就不会采用passwordEncoder加密后再进行比对。其他的加密方式也有不同的前缀id,比如md5加密或BCrypt加密都有不同的前缀id,而DelegatingPasswordEncoder会根据数据库查询出来的密码的不同前缀,采用不同的加密方式加密接收的password后再和数据库密码比对,利用这个特性就算数据库用多种不同的加密方式的密码,也可以顺利认证,这个好像是security默认的密码编辑器,但是可能由于兼容性好但效率较低的原因一般都会替换为某一种单独的密码编辑器如BCrypt

不过感觉一般用不太上,除非是运行了很久历经了很多不同加密时代的系统了,不过Security还提供了将数据库密码升级成指定加密方式的功能,比如将数据库的md5加密密码全部升级成Bcrypt,有兴趣的小伙伴可以去了解一下

简单理解Security的PasswordEncoder(密码编辑器)相关推荐

  1. Spring Security并没有那么难嗷 简单理解OAuth2.0

    文章目录 1. 基本概念 1.1 什么是认证 1.2 什么是会话 1.3 什么是授权 1.4 授权的数据模型 1.5 RBAC 1.5.1 基于角色的访问控制 1.5.2 基于资源的访问控制 2. 基 ...

  2. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

  3. Spring Security中的密码安全

    Spring Security中的密码安全 PasswordEncoder 接口 在 Spring Security 中,PasswordEncoder 接口代表的是一种密码编码器,其核心作用在于指定 ...

  4. Security中PasswordEncoder讲解

    Security中PasswordEncoder讲解 PasswordEncoder讲解 BCryptPasswordEncoder encode(....)实现 matches(...)实现 总结 ...

  5. DataSource数据源简单理解

    DataSource数据源简单理解 因为热爱,所以拼搏. –RuiDer 什么是数据源 JDBC2.0 提供了javax.sql.DataSource接口,它负责建立与数据库的连接,当在应用程序中访问 ...

  6. http协议的简单理解

    http协议的简单理解 1.http协议简介 2.认识url 3.http请求及响应 3.1 模拟实现一个简单服务器并向其发起请求 3.2 请求方法 3.2.1 GET 3.2.2 POST 3.3 ...

  7. Android:安卓学习笔记之MVP模式的简单理解和使用

    Android MVP模式的简单理解和使用 MVP模式 1. 为什么使用MVP模式? 1.1.实例说明 2.一步步让你理解MVP 2.1.MVP实现第一步, 将页面拆分为M/V/P三个模块 2.2. ...

  8. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  9. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

最新文章

  1. fzu 2150 Fire Game 【身手BFS】
  2. 企业根CA方法客户机证书的解决方案,ISA2006系列之三十
  3. Windows 7备份、还原功能详解
  4. 打印pdf就一页_Excel表格打印技巧汇总,看完才发现,你连基础打印技巧都不知道...
  5. react学习(6)----react样式多用内联
  6. AWS Lambda中的Cron表达式解析器
  7. mongodb配置文件启动linux,Linux运维知识之Mongodb启动方法:设定参数启动;从设置文件启动...
  8. 【信号与系统】三大变换公式表 | 傅里叶变换 | 拉普拉斯变换 | Z变换
  9. 利用计算机及时采集检测数据,计算机基础_课件.ppt
  10. Cglib动态代理实现方式
  11. onselect 与 onselectstart
  12. Delphi IdHTTP1下载文件防止假死 ( - 大悟还俗
  13. R语言ggplot2可视化为轴标签添加下标实战:符号下标、百分比下标、带括号的下标
  14. python画聚类树状图_影像组学学习笔记(36)-聚类树状图Dendrogram的python实现
  15. python自动发送qq消息_自动给qq好友发消息
  16. lvgl lv_conf.h文件详解
  17. c# Thumbnail 生成缩略图,生成压缩图,最大宽高比例缩放,最大边按比例缩放
  18. 手把手教你Vue从零撸一个迷你版MVVM框架
  19. HiveSql一天一个小技巧:如何在表的特定位置添加字段
  20. 网上最好的printf? 移植和例程!

热门文章

  1. MATLAB编写界面实战-一款优良的二维非结构化网格生成软件
  2. 页面缓存OutputCache
  3. BigDecimal类型 比较大小的方法
  4. python中的装饰器的使用实战
  5. 表示自己从头开始的句子_关于从头开始的好句子
  6. Java list打印对象的方法
  7. SWUN 1165 - 司马称好
  8. google log/glog
  9. 三位千万富翁告诉你如何赚钱
  10. file:///c:/video1/?68-0-0.html,kenhy/baidupan-video - 木兰确实