最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

“ ErrorTypeError:无法读取未定义的属性'alg'” JWT

网站源码admin18浏览0评论

“ ErrorTypeError:无法读取未定义的属性'alg'” JWT

“ ErrorTypeError:无法读取未定义的属性'alg'” JWT

我正在学习教程:

并且在注册本地部分时出现错误

弃用未处理的诺言。

但是我设法通过使用try-catch块解决了这个问题。但是再次由于主要错误:

TypeError: Cannot read property 'alg' of undefined

即使注册非常成功,我提出的每个请求也会返回一个错误。

错误使我指向此块:

signToken = user => {
  return JWT.sign({
    iss: 'CodeWorkr',
    sub: user.id,
    iat: new Date().getTime(), // current time
    exp: new Date().setDate(new Date().getDate() + 1) // current time + 1 day ahead
  }, JWT_SECRET);
}

这是什么原因,如何解决?


这是完整的控制器代码:

const JWT = require('jws');
const User = require('../models/user');
const { JWT_SECRET } = require('../configuration');

signToken = user => {
  return JWT.sign({
    iss: 'CodeWorkr',
    sub: user.id,
    iat: new Date().getTime(), // current time
    exp: new Date().setDate(new Date().getDate() + 1) // current time + 1 day ahead
  }, JWT_SECRET);
}

module.exports = {
  signUp: async (req, res, next) => {
    try {
      const { email, password } = req.body;

      // Check if there is a user with the same email
      const foundUser = await User.findOne({ "local.email": email });
      if (foundUser) { 
        return res.status(403).json({ error: 'Email is already in use'});
      }

      // Create a new user
      const newUser = new User({ 
        method: 'local',
        local: {
          email: email, 
          password: password
        }
      });

      await newUser.save();

      // Generate the token
      const token = signToken(newUser);
      // Respond with token
      res.status(200).json({ token });
    } catch (err) {
      res.status(500).send({
        message: "Error" + err
      })
    }
  },

  signIn: async (req, res, next) => {
    // Generate token
    const token = signToken(req.user);
    res.status(200).json({ token });
  },

  googleOAuth: async (req, res, next) => {
    // Generate token
    const token = signToken(req.user);
    res.status(200).json({ token });
  },

  facebookOAuth: async (req, res, next) => {
    // Generate token
    const token = signToken(req.user);
    res.status(200).json({ token });
  },

  secret: async (req, res, next) => {
    console.log('I managed to get here!');
    res.json({ secret: "resource" });
  }
}
回答如下:

首先,我得到了答案。我想知道我在这个问题中的标签是如何吸引更少的SO用户的。在我看来,当您使用移动开发标签时,可以更快地获得答案。

答案是该项目以某种方式需要错误的库?在示例项目中,它具有:

const JWT = require('jws');

但是查看了更多JWT示例项目后,我意识到应该是:

const jwt = require('jsonwebtoken');

已解决!

发布评论

评论列表(0)

  1. 暂无评论