2017-05-23 10 views
0

Ich benutze JWT's für die Authentifizierung für eine Benutzeranmeldung, aber ich bekomme immer folgende Fehler, wenn ich einen POST auf /auth Route machen möchte.Node JS TypeError: Secret muss eine Zeichenfolge oder Puffer sein

(node:3385) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: secret must be a string or buffer

(node:3385) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Hier ist mein Code

app.post('/auth', function (req, res, next) { 
    var username = req.body.username; 
    var password = req.body.password; 

    User.findOne({ 
     where: {username: username} 
    }).then(function (user) { 
     if(user){ 
      bcrypt.compare(req.body.password, user.password).then(function (passcheck) { 
       if(passcheck){ 
        var jwtUser = { 
         username: user.username, 
         name: user.name, 
         score: user.score, 
         accesslevel: "all" 
        }; 

        var token = jwt.sign(jwtUser, app.get('superSecretString'), { 
         expiresIn: 1440 //expires in 24 hours 
        }); 

        //callback(token); 

        res.json({ 
         success: true, 
         message: 'Here´s your token.', 
         token: token 
        }); 

        /* 
        var resp = {success: true, message: 'Heres your token.', token: token}; 
        response.write(JSON.stringify(resp)); 
        */ 
       }else{ 
        res.status(401).json({ 
         success: false, 
         message: 'Authentification failed. Password or Username wrong' 
        }); 
       } 
      }); 
     }else{ 
      res.status(401).json({ 
       success: false, 
       message: 'Authentification failed.' 
      }); 
     } 
    }).catch(next); 
}); 

Danke für Antworten.

+2

Im fügen Sie in jwt.sign richtigen Parameter zu übergeben denken müssen. Ich würde von diesem app.get ('superSecretString') starten, um nach Fehlern zu suchen. –

+0

@MykolaBorysyuk thx, habe ich in der config.js "module.exports" die "s" vergessen – pache

Antwort

1

Das Problem ist, dass Sie in der Konfigurationsdatei nicht als geheim deklariert sind. Sie können es auf eine andere Weise

const token = jwt.sign(user, '123456', { 
        expiresIn: 60 * 24 // expires in 24 hours 
       }); 

app.get('superSecretString') entfernen und '123456'

Verwandte Themen