0
私はJWTを使ってユーザーを認証していますが、ユーザー名のような情報もトークンに追加したいと考えています。JWTにユーザーの情報を追加するにはどうすればいいですか?
app.post('/authenticate', function(req, res){
User.findOne({
username: req.body.username
}, function(err, user){
if(!user){
console.log('Authentication failed. User not found');
}
else if(user){
if(user.password != req.body.password){
console.log('Authentication failed. Wrong password');
}
else{
var token = jwt.sign(user, app.get('secretWord'), {
expiresIn : 10800,
});
res.send({
token: token
});
}
}
})
});
私はトークンにユーザー名を関連付けることができます方法:
これは、私は、ユーザーを認証してきた後、私はトークンを作成する方法ですか?
var token = jwt.sign(user, app.get('secretWord'), {
expiresIn : 10800,
username : user.username
});
をしかし、それはエラーがスローされます:私が試した「ValidationErrorを: 『ユーザ名は、』許可されていません
私は本当にそのようなペイロードとしてデータベースから 'user'レコードを渡すことをお勧めしません!これにより、ユーザーのパスワードがトークンに含まれるようになります。 JWTのペイロードは暗号化されていないので、あなたのトークンが流出した場合、そこにパスワードを持っていれば悪いニュースになります。 –
ああ、私は既にトークンを生成するためにユーザーオブジェクトを使用しています...それでは、後でトークンからユーザー名を取得するにはどうすればいいですか? – Mit
新しいオブジェクトを作成し、それをペイロードとして使用する: 'var payload = {username:user.username};' –