当前位置: 首页 > 知识库问答 >
问题:

没有从 JWT 的有效负载中获取所有字段

汝臻
2023-03-14

我创建了一个具有登录注销选项的MEAN堆栈Web应用程序.对于要登录的用户,我使用了jsonwebtoken npm包。这里的主要问题是当创建 JWT 中的用户日志并且该令牌的有效负载中包含用户名、电子邮件和全名时,但在解码令牌时,我只获得用户名和电子邮件字段

这是 JWT.Sign 函数-

var token=jwt.sign({userid:user.username,email:user.email,fullname:user.fullname},secret,{expiresIn:'24h'});

在这里 jwt.verify 方法-

jwt.verify(token,secret,function(err,decoded){
    if(err){
        res.json({success:false,message:"invalid token"});
    } else {
        req.decoded=decoded;
        next();
    }
})

令牌示例-

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJuaXRpbi5zYWNoZGV2IiwiZW1haWwiOiJuaXRpbi5zYWNoZGV2QGVtYWlsLmNvbSIsImlhdCI6MTQ4NDU1ODAxMiwiZXhwIjoxNDg0NjQ0NDEyfQ.fWogT-aHJY4Xyc8Ebm4OXPkWD3poaWG3IAAf9VS-q58

令牌解码-

{
    "userid": "nitin.sachdev",
    "email": "nitin.sachdev@email.com",
    "iat": 1484558012,
    "exp": 1484644412
}

用户模式 -

 var UserSchema=new Schema({
    fullname:String,
    username:{type:String,lowercase:true,required:true,unique:true},
    password:{type:String,required:true},
    email:{type:String,required:true,lowercase:true,unique:true},
    contactno:Number,
    orgname:String
});

共有1个答案

隆睿
2023-03-14

我发现了错误,我忘记在使用“.findOne()”方法查找用户时在“.select()”方法中输入全名作为参数。

这是更正后的代码-

                                                 //mistake was actually here    
User.findOne({username:req.body.username}).select('email username password fullname').exec(function(err,user){
                //if(err) throw err;
                if(!req.body.password||!req.body.username)
                {
                        res.json({success:false,mesage:"please enter all the fields"});

                }
                else
                {
                    if(!user){
                    res.json({success:false,message:"couldnt find the user"});
                }
                else if(user)
                {
                    if(!req.body.password)
                        res.json({success:false,mesage:"please enter password"});
                    var validPassword=user.comparePassword(req.body.password);
                    if(validPassword){
                        //jwt.sign ismethod to create JWT. 1st par is object containing data that token will contain.
                        console.log(user.fullname);
                        var token=jwt.sign({userid:user.username,email:user.email,fullname:user.orgname},secret,{expiresIn:'24h'});
                        res.json({success:true,message:"loggedin Successfully",token: token});
                    }
                    else
                    {
                        res.json({success:false,message:"wrong password"});
                    }
                }   
                }

            });
 类似资料:
  • 我使API服务器与Node.js和快递。 我还为auth用户使用了JWT令牌身份验证。 如果令牌过期,我的场景就在这里。 > ,因为它不会检查签名是否正确。 对于提取过期令牌的有效负载,有什么解决方案吗? 谢谢。

  • 我喜欢用于bean声明等的注释,但现在我们有这么多具有顺序的bean(@取决于)。很难维护或浏览配置。 是否有任何工具可以根据您的所有bean注释提供“有效的Spring配置”信息?

  • 我在Spring Boot中创建了一个JWT令牌,用于存储用户详细信息。当我使用Jwttokenutil时。getUsernameFromToken(authToken)[authToken是传递的令牌]方法我将数据集获取给Subject。类似地,我希望将包含其他用户详细信息的数据集获取到Payload。但是我不能得到它。 ======下面是我的令牌生成方法/代码:======== =======

  • 问题内容: 我有一个向我的Java Servlet发送POST请求的javascript库,但是在该方法中,我似乎无法获取请求有效内容。在chrome Developer Tools中,所有内容都位于标头标签的“请求有效负载”部分中,并且内容在那里,而且我知道doPost方法正在接收POST,但它只是空白。 对于 对象,我可以通过什么方式在请求有效负载中获取数据? 这样做 两者最终都没有数据 问题

  • 问题内容: 我怎么知道我可以从对象/界面访问的字段?我尝试过反射,但看来您必须首先知道字段名称。如果我需要了解所有可用字段怎么办? 问题答案: 您可以使用该函数获取类型描述符。从那里,您可以列出存储在界面中的动态值的字段。 例: 输出: 调用的结果是一个值为,其中包含字段名称以及其他内容: 如果还需要这些字段的值,则可以使用获取,然后可以使用或: 输出: 在Go Playground上尝试一下。

  • 问题内容: 我有一个文件,称之为。 有没有一种方法可以“读取”其中的内容,并获取其中的所有类的列表作为完整的类名,包括其包,例如? 我在考虑,但是似乎找不到用于检索整个类集的方法。 问题答案: 您可以将dexlib2库用作独立库(在maven中可用),以读取dex文件并获取类列表。 请注意,类名将采用“ Ljava / lang / String;”的形式,这就是它们如何存储在dex文件(和Jav

  • 根据这个帖子,我们可以通过下面的代码得到一个数的所有约数。 例如,数字的除数是。 在搜索了一些相关的帖子后,我没有找到任何好的解决方案。有什么有效的方法来实现这一点吗? 我的解决方案: 通过这个解求出给定数的所有素因子 得到这些基本因子的所有可能组合 然而,这似乎不是一个好办法。

  • 本文向大家介绍从Java字符串中获取所有数字,包括了从Java字符串中获取所有数字的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 为了仅显示上述字符串中的数字,我们使用了该方法并将所有字符替换为空。 以下是最后的示例,该示例仅显示字符串中的数字。 示例 输出结果