express的multer如何添加用户鉴权?

lwpassvoice
  • 49

1、需要做个用户文件上传的接口,接收用户文件前需要判断是否登录
2、使用multer

const multer  = require('multer');
const upload = multer({ dest: 'uploads/' });

const router = express.Router();

router.post('/upload', authCheck.checkLogin, upload.single('avatar'), UserFile.uploadFile)

export default router

其中authCheck.checkLogin是检测用户登录的中间件,如果已登录,返回userid
UserFile.uploadFile是上传成功后的返回处理

3、结果:上传文件失败,返回

<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Error</title>
    </head>
    <body>
        <pre>10000</pre>
    </body>
</html>

10000是userid

4、请问要实现鉴权再上传应该怎么去做呢


找到一些资料,https://github.com/expressjs/...

回复
阅读 1k
1 个回答
function checkLogin(req, res, next) {
  // 判断是否登录,可以通过cookie/session或jwt
  if (req.get('Authoriztion') === 'valid-token') {
    // 保存登录信息到req中供之后调用
    req.userid = 1000;
    // 透传到下一个中间件, 必须
    next();
  } else {
    // 登录失败,直接返回错误响应
    res.status(403).end();
  }
}
 
router.post('/profile', checkLogin, upload.single('avatar'), function (req, res, next) {
  console.log(req.userid); // 1000
  console.log(req.file); // 上传的文件
  console.log(req.body); // 其它字段
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏