开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
浏览器跳转地址拼接
const result = JSON.parse(err);
//{path: '/admin/user-edit', message: '对比失败', id: id}
let params = [];
for(let attr in result) {
if(attr != 'path') {
params.push(attr + '=' + result[attr]);
}
}
res.redirect(${result.path}?${params.join('&')});
密码加密 bcryptjs
哈希加密是单程加密方式 1234 =>abcd
在加密的密码中随机加入随机字符串可以增加密码被破解的难度
//导入bcrypt模块
const bcrypt = require('bcryptjs);
//生成随机字符串 generate生成salt盐
const salt = await bcrypt.genSalt(10);
//使用随机字符串对密码进行加密
const result = await bcrypt.hashSync('123467', salt);
//密码比对
let isEqual = await bcrypt.compare('123456', '加密的密码');
cookie 与 session
cookie:浏览器在电脑硬盘中开辟的一块空间,主要供服务器端存储数据
cookie 中的数据是以域名的形式进行区分的
cookie 中的数据是有过期时间的,超过时间数据会被浏览器自动删除
cookie 中的数据会随着请求被自动发送到服务器端
session 实际是一个对象,存储在服务器端的内存中,在 session 对象中也可以存储多条数据,每一条都有一个 sessionid 做为唯一标识
node中使用cookie与session
在node中需要借用express-session实现session功能
const session = require('express-session');
app.use(session({ secret: 'secret key' }));
//数据库中的user用户信息存储到session中
req.session.username = user.username
清除浏览器中存储的cookie
req.session.destroy(function(){
res.clearCookie('connect.sid');
res.redirect('/admin/login')
})
formidable
解析表单支持get请求参数,post请求参数,文件上传
//引入formidable模块
const formidable = require('formidable');
//创建表单解析对象
const form = new formidable.IncomingForm();
//设置文件上传的路径
form.uploadDir = "/my/dir"
//是否保留表单上传文件的扩展名
form.keepExtensions = false;
//对表单进行解析
form.parse(req, (err, fields, files) => {
//fields存储普通请求参数
//files存储上传的文件信息
})
文件读取FileReader
var reader = new FileReader();
reader.readAsDataURL('文件');
reader.onload = function () {
console.log(reader.result); }
Joi Javascript 对象的规则描述语言和验证器
enctype 指定 form 表单数据的编码类型
applcation/x-www-form/urlencoded
multipart/form-data 将表单数据编码二进制类型