nodejs标记为空

时间:2017-11-14 07:53:20

标签: node.js token

我开始研究nodejs,我遇到了一个问题, 当我在'postman'上发布我的登录时,我收到了成功消息,但令牌内容为空。 这是我的server.js代码:

var express = require('express');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var config = require('./config');
var mongoose = require('mongoose');
var app = express(); 
.......
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json());

这是我的api代码:

var jsonwebtoken = require('jsonwebtoken');

function createToken(user){
    jsonwebtoken.sign({
        _id: user._id,
        name: user.name,
        username: user.username
    }, secretKey,{
        expiresIn: '144000000m'
    });

    return jsonwebtoken;
};
    api.post('/login',function(req,res){

        User.findOne({
            username: req.body.username
            }).select('password').exec(function(err,user){
                if (err) 
                {
                    res.send(err);
                }
                else if (!user) {
                    res.send({message : "User dosen't exist."});
                }
                else if (user){
                    var validPassword = user.comparePassword(req.body.password);
                    if (!validPassword)
                    {
                        res.send({ message : "Password is incorrect." });
                    }
                    else
                    {
                        ///// token
                        var token= createToken(user);
                        if (token)
                        {
                        res.json({
                            success: true,
                            message: "Successfuly login!",
                            token: token
                        });
                        }

                        else
                        {
                            console.log('error');
                        }
                    }
                }
            })
        });

事实上,最后我从“邮递员”那里收到了这条消息:

{
    "success": true,
    "message": "Successfuly login!",
    "token": {}
}

如您所见,令牌为空。 谢谢!

1 个答案:

答案 0 :(得分:0)

在createToken()中,您需要返回令牌本身而不是导入的库,例如:

function createToken(user){
    return jsonwebtoken.sign({
        _id: user._id,
        name: user.name,
        username: user.username
    }, secretKey,{
        expiresIn: '144000000m'
    });
}