哈希加密bcrypt 和 cookie和session 和 joi 和 formidable 和 FileReader

本文介绍了哈希加密算法bcrypt在密码安全中的使用,包括生成随机盐和加密过程,以及如何在Node.js中处理cookie和session以管理用户数据。此外,还提到了JavaScript对象规则描述语言Joi的使用,用于数据验证。文章还分享了前端开发者的学习资源,包括一套全面的学习资料链接。
摘要由CSDN通过智能技术生成

哈希加密bcrypt和cookie和session和joi 和``formidable``FileReader


1.哈希加密bcrypt

1.密码加密

哈希加密是单程加密方式:1234=>abcd;

在加密密码中加入随机字符串可以增加密码被破解的难度;

//导入bcrypt模块

const bcrypt = require(‘bcrypt’);

//生成随机字符串 gen=>generate 生成salt 盐

// genSalt方法接收一个数值作为参数

// 数值越大 生成的随机字符串复杂度越高

// 数值越小 生成的随机字符串复杂度越低

// 默认值是 10

// 返回生成的随机字符串

let salt = await bcrypt.genSalt(10);

//使随机字符串对密码进行加密

// 1. 要进行加密的明文

// 2. 随机字符串

// 返回值是加密后的密码

let pass = await bcrypt.hash(‘明文密码’,salt);

bcrypt 依赖的其他环境

  1. python 2.x

  2. node-gyp npm install -g node-gyp

  3. windows-build-tools

  4. npm install --global --production windows-build-tools

2.密码对比

// 密码比对

let result = await bcrypt.compare(‘明文密码’, ‘加密密码’);

2.cookie和session

cookie:浏览器在电脑硬盘中开辟一块空间,主要供服务器端存储数据;

1.cookie中的数据是以域名的形式进行区别的;

2.cookie中的数据是有过期时间的,超过时间数据会被浏览器自动删除;

3.cookie中的数据会随着请求被自动发送到服务器端;

session:实际上就是一个对象,存储在服务器的内存中,在session对象中也可以存储多条数据,每一条数据都有一个sessionid作为唯一标识;

在node中使用express-session 模块中实现session功能

// 导入express-session模块

const session = require(‘express-session’);

// 配置session

app.use(session({

secret: ‘secret key’,

resave:false,

saveUninitialized: false,

cookie:{

//maxAge接收一个毫秒,从当前时间起,加上设置的时间,如果超过设置的时间,就删除

maxAge:246060*1000

}

}))

从用户页面从session中获取数据

// 创建用户列表路由

admin.get(‘/user’,(req,res)=>{

res.render(‘admin/user’,{

//在渲染页面中使用模板拼接用户名,在页面中显示

msg:req.session.username

})

})

//将用户名存储在请求对象中

//通过请求对象req下边的session对象存储,是express-session模块添加的方法

//这样就可以向session对象里边存储一些数据,在内部自动生成一个唯一的sessionid,并且把sessionis存储到客户端的cookie中

req.session.username = user.username;

3.joi (javaScript对象的规则描述语言和验证器)

安装第三方包 npm install joi

//引入joi模块

const joi = require(‘joi’);

//定义对象的验证规则

const schema = {

username:joi.string().min(2).max(5).required().error(new Error(‘username属性没有通过验证’)),

birth:joi.number().min(1900).max(2020).error(new Error(‘birth没有通过验证’))

};

async function run(){

try {

//验证

await joi.validate({username:‘ab’,birth:1901},schema);

}

catch(ex){

console.log(ex.message);

return;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可领取!

/03/13/H4lCoPEF.jpg" />

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+点击【学习资料】即可领取!

[外链图片转存中…(img-YxFKUaz0-1712656932214)]

[外链图片转存中…(img-s1bF38gt-1712656932215)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值