multer 模块  github:https://github.com/fanlina157/nodePro

npm i multer

fileRouter.js

var express = require('express')
var router = express.Router() // 图片上传
const multer = require('multer') var storage = multer.diskStorage({
// 设置上传后文件路径,uploads 文件夹自动创建(可以先手动)
destination: function(req, file, cb) {
cb(null, './static/img');
},
filename: function(req, file, cb) {
cb(null, `${Date.now()}-${file.originalname}`)
}
}) // 添加配置文件到muler对象。
var upload = multer({ storage: storage }); // 文件上传请求处理,upload.array 支持多文件上传,第二个参数是上传文件数目
// upload.single('hehe') 上传一张图片 hehe 就是上传的key 值 前后端统一 router.post('/upload', upload.single('img'), function (req, res) {
// 读取上传的图片信息
let {mimetype,filename} = req.file
// 限制文件类型
let imgType = ['png','jpg','jpeg','gif']
let temType = mimetype.split('/')[1]
if(imgType.indexOf(temType) === -1) {
return res.send('格式不正确')
}
// 把路径返回
let url = '/public/img/'+filename
res.send({url:url})
// file: {
// fieldname: 'img',
// originalname: '222.png',
// encoding: '7bit',
// mimetype: 'image/png',
// destination: './uploads',
// filename: '1584687806143-222.png',
// path: 'uploads\\1584687806143-222.png',
// size: 6268
// }, // 设置返回结果
// var result = {};
// if(!files[0]) {
// result.code = 1;
// result.errMsg = '上传失败';
// } else {
// result.code = 0;
// result.data = {
// url: files[0].path
// }
// result.errMsg = '上传成功';
// }
// res.end(JSON.stringify(result));
}); module.exports = router

身份验证问题

传统的session+cookie身份验证

server.js

const session = require('express-session');
const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use(session({
resave: true, // 即使session 没有被修改 也保存session 值 默认为true
saveUninitialized: false, // 无论有没有session cookie 每次请求都设置session cookie
secret: 'love',
cookeie:{maxAge:60*100*60*24} //设置过期时间
})); const foodRouter = require('./router/foodRouter')
app.use('/food',(req,res,next)=>{
// user 接口存值了, food 接口判断
if(req.session.login) {
next()
}else {
return res.send({code:444, message:'请先登录'})
}
}, foodRouter)

用户退出登录

jwt

  对称加密

使用 路由页面

const JWT = require('./token.js')

验证

最新文章

  1. .NET开源资源汇总
  2. 文法分类的python实现
  3. .NET中的CTS、CLS和CLR
  4. timingFunction
  5. js:语言精髓笔记5----语言分类
  6. Jni的一个异常
  7. framework7学习笔记
  8. Jmeter Constant Throughput Timer 使用
  9. 蜗牛爱课 -- iOS 设计模式之模板模式
  10. Cookie、Session
  11. mysql编码的那点事
  12. 第一百三十一节,JavaScript,封装库--CSS
  13. web.config中httpModules和Modules的区别
  14. Codeforces 837E Vasya's Function - 数论
  15. hdu2204 Eddy's爱好 打表+容斥原理
  16. [JAVA]多线程下如何确定执行顺序性
  17. 用代码来细说Csrf漏洞危害以及防御
  18. DFS剪枝处理HDU1010
  19. github上fork别人的代码之后,如何保持和原作者同步的更新
  20. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群

热门文章

  1. C语言中static关键字用法
  2. sparksql的join有哪些及实现原理
  3. mybatis面试资料
  4. git连接不上,使用git镜像
  5. 使用yum快速安装mysql-5.7(用于测试)
  6. Django Rest Framework中文文档:Serializer relations
  7. 实验一-密码引擎-加密API研究
  8. react native 模拟机调试,debug菜单在哪
  9. pytorch自定义RNN结构(附代码)
  10. react hooks组件父组件调用子组件方法