打卡node day07--图片上传,身份验证

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')

 

 验证

 

posted @ 2020-03-24 09:56  学习。。。  阅读(129)  评论(0编辑  收藏  举报