- 创建项目
- Nest 控制器
- nest 配置路由请求数据
- Nest 服务
- Nest 模块
- 配置静态资源
- 配置模板引擎
- Cookie 的使用
- Session 的使用
- 跨域,前缀路径、网站安全、请求限速
- 管道、守卫、拦截器、过滤器、中间件
- 一例看懂中间件、守卫、管道、异常过滤器、拦截器
- 数据验证
- 配置抽离
- 环境配置
- 文件上传与下载
- 实现图片随机验证码
- 邮件服务
- nest 基于 possport + jwt 做登陆验证
- 对数据库的密码加密:md5 和 bcryptjs
- 角色权限
- 定时任务
- 接入 Swagger 接口文档
- nest 连接 Mongodb
- typeORM 操作 Mysql 数据库
- nest 统一处理数据库操作的查询结果
- 数据库实体设计与操作
- typeorm 增删改查操作
- typeorm 使用事务的 3 种方式
- typeorm 一对一关系设计与增删改查
- typeorm 一对多和多对一关系设计与增删改查
- typeorm 多对多关系设计与增删改查
- nest 连接 Redis
- 集成 redis 实现单点登录
- Q:nestJS 注入其他依赖时为什么还需要导入其 module
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
对数据库的密码加密:md5 和 bcryptjs
密码加密
一般开发中,是不会有人直接将密码明文直接放到数据库当中的。因为这种做法是非常不安全的,需要对密码进行加密处理。 好处:
- 预防内部网站运营人员知道用户的密码
- 预防外部的攻击,尽可能保护用户的隐私
加密方式
- 使用
md5
:每次生成的值是一样的,一些网站可以破解,因为每次存储的都是一样的值 - 使用
bcryptjs
:每次生成的值是不一样的
yarn add md5
加密
import * as md5 from 'md5'; const passwrod = '123456'; const transP = md5(passwrod); // 固定值:e10adc3949ba59abbe56e057f20f883e
给密码加点”盐”:目的是混淆密码,其实还是得到固定的值
const passwrod = '123456'; const salt = 'dmxys' const transP = md5(passwrod + salt); // 固定值:4e6a2881e83262a72f6c70f48f3e8022
验证密码:先加密,再验证
const passwrod = '123456'; const databasePassword = 'e10adc3949ba59abbe56e057f20f883e' if (md5(passwrod) === databasePassword ) { console.log('密码通过'); }
使用 bcryptjs
yarn add bcryptjs yarn add -D @types/bcryptjs
同一密码,每次生成不一样的值
import { compareSync, hashSync } from 'bcryptjs'; const passwrod = '123456'; const transformPass = hashSync(passwrod); $2a$10$HgTA1GX8uxbocSQlbQ42/.Y2XnIL7FyfKzn6IC69IXveD6F9LiULS const transformPass2 = hashSync(passwrod); $2a$10$mynd130vI1vkz4OQ3C.6FeYXGEq24KLUt1CsKN2WZqVsv0tPrtOcW const transformPass3 = hashSync(passwrod); $2a$10$bOHdFQ4TKBrtcNgmduzD8esds04BoXc0JcrLme68rTeik7U96KBvu
验证密码:使用不同的值 匹配 密码 123456,都能通过
const password = '123456'; const databasePassword1 = '$2a$10$HgTA1GX8uxbocSQlbQ42/.Y2XnIL7FyfKzn6IC69IXveD6F9LiULS' const databasePassword2 = '$2a$10$mynd130vI1vkz4OQ3C.6FeYXGEq24KLUt1CsKN2WZqVsv0tPrtOcW' const databasePassword3 = '$2a$10$bOHdFQ4TKBrtcNgmduzD8esds04BoXc0JcrLme68rTeik7U96KBvu' if (compareSync(password, databasePassword3)) { console.log('密码通过'); }
推荐使用 bcryptjs
,算法要比 md5
高级
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论