Login Endpoint无法在我的计算机上运行,​​但在其他计算机上可以运行

时间:2020-06-25 20:15:01

标签: node.js express authentication token

好的,所以在这一点上我很好奇,我很想找出我的代码或机器出了什么问题。我正在做一个团队项目;我和其他人一起是后端的一部分。我们开始测试端点,除了/api/auth/login端点之外,它们都可以正常工作。 Insommia给了我500个致命错误,没有消息。问题是,当克隆到另一个人的计算机中时,代码完全相同。

我继续前进,甚至删除了本地存储库并创建了一个新存储库,但仍然出现错误。我不知道发生了什么。该项目是NodeJs Express后端应用程序。 如果有人想自己测试一下,这里是仓库。有趣的是,已部署的api版本可以完美运行,包括登录。

https://github.com/Build-Week-Secret-Family-Recipes-2/Back-End

enter image description here

这是我用于登录的身份验证路由器代码


router.post('/login', (req, res) => {
    let { username, password } = req.body;

    Users.findByFilter({ username })
        .first()
        .then((user) => {
            if (user && bcrypt.compareSync(password, user.password)) {
                
                const token = signToken(user);      
                res.status(200).json({
                    token: token,
                    message: `Welcome ${user.username}!`,
                });
            } else {
                res.status(401).json({ message: 'Invalid Credentials' });
            }
        })
        .catch((err) => {
            res.status(500).json(err);
        });
});

function signToken(user) {
    const payload = {
        username: user.username,
    };
    const secret = process.env.JWT_SECRET || 'it is a secret, is it safe?';
    const options = {
        expiresIn: '1h',
    };
    return jwt.sign(payload, secret, options);
}

1 个答案:

答案 0 :(得分:0)

好的,伙计们,我终于找到了问题所在。该代码对我以外的所有人都有效的原因是,因为我在Insomnia中关闭了标头类型。因此它没有收到JSON对象。

enter image description here