node.js - SecretOrPrivateKey 必须有一个值

标签 node.js mongoose jwt

我正在尝试学习nodejs并使用jwt为用户创建 token 。但我在服务器端收到此错误:secretOrPrivateKey 必须有一个值。这是很多代码,所以我将给出我认为重要的内容(如果您需要其他内容,请告诉我):

user.js:

const config = require('./../config/config').get(process.env.NODE_ENV);
...
userSchema.methods.generateToken = function(callback) {
    console.log(config.SECRET); // THIS IS UNDEFINED
    var token = jwt.sign(this._id.toHexString(), config.SECRET);

    this.token = token;
    this.save(function(err, user) {
        if (err) return callback(err);
        callback(null, user)
    });
}

server.js:

app.post('/api/login', (req, res) => {
    User.findOne({'email': req.body.email}, (err, user) => {
        ...    
        user.generateToken((err, user) => {
            if (err) return res.status(400).send(err);

            res.cookie('auth', user.token).json({
                isAuth: true,
                id: user._id
            })
        })
    })
})

config.js:

const config = {
    production: {
        SECRET: process.env.SECRET,
        DATABASE: process.env.MONGODB_URI
    },
    default: {
        SECRET: 'SUPER_SECRET-PASSWORD!123?',
        DATABASE: 'mongodb://localhost:27017/feedback'
    }
}

exports.get = function get(env) {
    return config[env] || config.default
}

最佳答案

我认为你对 Node 的调用可能是错误的。尝试使用 node server.js,您应该会获得默认配置。您还可以将console.log放入exports.get()中以查看它作为环境变量发送的内容。

关于node.js - SecretOrPrivateKey 必须有一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52412131/

相关文章:

node.js - 验证不同类型用户的身份验证 token 的最佳方法是什么?

node.js - Mongoose MongoDB 地理空间查询

javascript - 错误 : Cannot read property 'close' of null

node.js - 使用 Windows 身份验证登录 Angular App

node.js - mongoDB 中的条件 $sum 查询

java - Spring安全性返回401甚至permitAll()

node.js - npm 安装报错 EPERM Operation not permitted

node.js - Mongoose findOne 函数未执行

Mongoose 模式 - 必需的子级,而不是父级

swift - 如何使用 JWT for Google firebase 生成授权 token ?