【问题标题】:"Missing credentials" with PassportJS when I put enctype="multipart/form-data" and an input[type="file"]当我输入 enctype="multipart/form-data" 和 input[type="file"] 时,PassportJS 出现“缺少凭据”
【发布时间】:2019-05-30 19:08:16
【问题描述】:

问题

我遇到了一个问题,当我将 enctype="multipart/form-data" 用于我的表单(通过上传(.jpg/.png 等))并汇总它时,我的闪存显示“丢失凭据”,没有精确性。那么我该如何解决呢?

我尝试过的

我搜索了解决方案,但没有人回答我的问题。所以我试图在 1-2 小时内解决这个问题。我什么也没找到。我也在另一个论坛上问过(alsacreations.com,如果你知道的话)

据我所知,这不是我的 config/passport.js 的问题,因为否则,在我的控制台中,我会有日志。

一些代码

[2] GET /api/auth/user 304 0.621 ms - -
[2] GET /api/auth/user 304 0.816 ms - -
[2] GET /favicon.ico 200 0.072 ms - 2780
[2] GET /assets/dist/app.js 304 1.433 ms - -
[2] GET /signup 304 2.842 ms - -
[2] POST /api/auth/user 200 5.250 ms - 2
[2] POST /signup 302 0.951 ms - 58
[2] GET /signup 200 3.036 ms - 3596
[2] GET /assets/styles/main-css.css 304 0.919 ms - -
[2] GET /assets/dist/main-js.js 304 2.542 ms - -
[2] GET /assets/dist/app.js 304 1.797 ms - -
[2] GET /assets/config/config-en.json 304 0.720 ms - -
[2] GET /assets/dist/manifest.json 304 0.584 ms - -
[2] GET /api/auth/user 200 0.529 ms - 5
[2] GET /api/auth/user 304 1.049 ms - -
[2] GET /assets/dist/app.js 304 0.994 ms - -
[2] GET /signup 200 4.576 ms - 3376

如您所见,没有日志...

来演示一下吧!

https://forum.alsacreations.com/upload/1559134328-67719-alsa.png

  • 我有一个表单(带有 enctype="multipart/form-data" 等)

https://forum.alsacreations.com/upload/1559134431-67719-alsa.png

  • 我上传了我的图片(因为它是头像)

https://forum.alsacreations.com/upload/1559134534-67719-alsa.png

  • 但是(否则就太容易了……) 当我上传它时,我收到了这条消息(“缺少凭据”),有没有我没有收到的回调? (我想了解更多信息)

感谢您的帮助。

(对不起,我无法放置图像,我的声誉在 10 分以下,哈哈)

【问题讨论】:

    标签: javascript node.js express passport.js


    【解决方案1】:

    在您处理上传图片的逻辑之前,您是否检查过用户是否已登录?通过 req.isAuthenticated() 像这样:

    app.get('/some_path', checkAuthentication, function(req,res) {
        // your logic upload files
    });
    
    function checkAuthentication(req,res,next) {
        if(req.isAuthenticated()) {
            //req.isAuthenticated() will return true if user is logged in
            next();
        } else{
            res.redirect("/login");
        }
    }
    

    【讨论】:

      【解决方案2】:

      是的,我做到了!

      你也可以在我的 github 中看到:https://github.com/Soldat8889/psearch/tree/develop 在 app 文件夹、路由和 signupRouter.js 中

      module.exports = {
          get: (req, res, _Template) => {
              fs.readFile(`public/config/config-${req.cookies.lang}.json`, 'utf-8', (e, data) => {
                  if(e) {
                      // REDIRECT
                      res.redirect('/lang-select');
                      return;
                  }
      
                  if(req.isAuthenticated()) {
                      // REDIRECT
                      res.redirect('/dashboard');
                      return;
                  }
      
                  res.render('main', {
                      title: JSON.parse(data)['title']['signup'],
                      description: JSON.parse(data)['description']['signup'],
                      lang: req.cookies.lang,
                      url: `${req.protocol}://${req.get('host')}${req.originalUrl}`,
                      env: nodeEnv,
                      mainCSS: _Template.mainCSS,
                      mainJS: _Template.mainJS,
                      appJS: _Template.appJS,
                      params: {
                          email: req.session.email,
                          username: req.session.username,
                          errorTarget: req.session.errorTarget
                      }
                  });
              });
          },
          authenticate: passport.authenticate('local-signup', { successRedirect: '/dashboard', failureRedirect: '/signup', failureFlash: true })
      }
      

      【讨论】:

        猜你喜欢
        • 2016-05-07
        • 2016-11-11
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-28
        • 2016-04-02
        相关资源
        最近更新 更多