登录nodejs后显示个人资料信息

我是谁

我是Node.JS API 创建的新手我已经成功地使用JWT令牌实现了登录,并且我还创建了一个文件来验证和传递头中的令牌

这是我的登录路线:-

router.post('/login' , (req, res, next) => {

    User.find({email: req.body.email})
    .exec()
    .then(user => {
        if(user.length < 1) {
            return res.status(401).json({
                message: "Auth failed. User not found."
            })
        }
        bcrypt.compare(req.body.password, user[0].password, (err, result) =>{
            if (err) {
                return res.status(401).json({
                message: "Auth failed. Check email and password"
                });             
            }   
            if (result){
                const adminEmail = "[email protected]";                                               
                const role = user[0].email===adminEmail? "admin" : "user";                                  
                const token = jwt.sign( 
                    {
                        email: user[0].email,
                        userId: user[0]._id,
                        role
                    },
                    process.env.JWT_KEY,
                    {
                        expiresIn : "1h"
                    });
                    return res.status(200).json({
                    message: "Auth Successful",
                    token : token
                    });
            }
        });
    })
    .catch(err =>{
        if (err.code == 500)
                    res.status(500).send(["Something went wrong in login"]);
            else
            return next(err);
    });
});

有了这个,我在登录中创建了一个 JSON 响应:-

{
    "message": "Auth Successful",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRvbUB4eXouY29tIiwidXNlcklkIjoiNWMzMzI0MTgyNTg4M2I0Yzc0ODNkOGJjIiwicm9sZSI6InVzZXIiLCJpYXQiOjE1NDY5MzMwODYsImV4cCI60.zfRUQmg5K_mBU0Dkq72c0sgzFtCXvu8kObyvEflhg"
}

现在,我还创建了一个文件来检查用户的身份验证。检查 auth.js

const jwt = require('jsonwebtoken');
module.exports = (req, rest, next) =>{ 
    try{
        const token = req.headers.authorization.split(" ")[1];
        console.log(token);
        const decoded = jwt.verify(token, process.env.JWT_KEY)
        req.userData = decoded;
        next();
    }
    catch(error){
        return res.status(401).json({
            message: "Auth failed"
        });
    }
};

我需要用户登录,并且只能看到他们在注册期间提供的详细信息。

报名途径:-

router.post('/register' , ctrlUser.register);

用户控制器:-

const mongoose = require ('mongoose');
const User = mongoose.model('User');

module.exports.register = (req, res, next) =>{  
    var user = new User();
    user.fullName = req.body.fullName;
    user.email = req.body.email;
    user.password = req.body.password;
    user.phoneNumber = req.body.phoneNumber;
    user.save((err, doc) =>{
        if(!err)
            res.send(doc);
        else{
            if (err.code == 11000)
                    res.status(422).send(["Entered duplicate email address. Please check"]);
            else
            return next(err);
            }
    });
}

个人资料路线中,我需要在成功登录后显示注册详细信息:-

router.get('/profile', checkAuth, (req, res) =>{
    //something to do.
});

我被困在这里了一段时间。

沙姆·纳希德

您可能想要获取登录的用户信息。

试试下面的代码

router.get('/profile', checkAuth, (req, res) =>{
    //something to do.
    // printing the user data
    console.log(req.userData);

    // sending the user data
    res.send(req.userData)
});

在您的check-auth中间件中,您已经将用户数据

req.userData = decoded;

所以你userData应该在路线上可用。

并且由于您使用了 usermailid进入jwt token了 sin 部分,因此它们将在userData对象中可用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

登录后获取用户信息以显示在个人资料部分

来自分类Dev

使用PDO登录后显示个人资料页面

来自分类Dev

显示个人资料图片而不登录

来自分类Dev

如果用户在登录后更改了他的 facebook 个人资料详细信息,如何在我的应用程序中更新 facebook 个人资料?

来自分类Dev

登录Java后获取用户个人资料

来自分类Dev

Android:尝试根据用户个人资料显示的信息

来自分类Dev

使用SocialAuth API显示个人资料详细信息

来自分类Dev

用户名和个人资料图片图片在Google中通过Google +登录后未显示

来自分类Dev

链接个人资料并登录

来自分类Dev

Facebook个人资料登录时间戳

来自分类Dev

Google登录-返回空的个人资料

来自分类Dev

如何在Sitecore的“社交连接”模块中的“登录”上访问用户个人资料信息

来自分类Dev

在不使用图形 API 的情况下使用 facebook 登录后获取用户信息,如姓名、照片和个人资料图片

来自分类Dev

显示用户个人资料Devise Rails

来自分类Dev

上载个人资料图片并显示

来自分类Dev

显示从Github获取的个人资料图片

来自分类Dev

显示群组中的个人资料

来自分类Dev

显示用户个人资料页面PHP

来自分类Dev

显示 Outlook 个人资料图片

来自分类Dev

在django-allauth中首次社交登录后,如何强制填充用户个人资料?

来自分类Dev

在MVC中使用应用程序登录后如何获取Microsoft帐户个人资料照片

来自分类Dev

如何让用户登录php网站后,只能查看他的个人资料

来自分类Dev

谷歌登录另一个活动后如何保存谷歌个人资料

来自分类Dev

我的个人资料照片仅在我在应用加载时触摸它后才会显示

来自分类Dev

Wordpress:在单击个人资料图片时显示 Gravatar 个人资料

来自分类Dev

将用户个人资料表与登录详细信息表分开是否有意义

来自分类Dev

如何使用xamarin.auth进行Facebook登录并以Xamarin形式获取用户的个人资料信息

来自分类Dev

当我知道密码和个人资料信息正确无误时为何无法登录Github感到困惑

来自分类Dev

Android登录输入将通过HttpGet JSON发送到服务器并返回用户个人资料信息列表

Related 相关文章

  1. 1

    登录后获取用户信息以显示在个人资料部分

  2. 2

    使用PDO登录后显示个人资料页面

  3. 3

    显示个人资料图片而不登录

  4. 4

    如果用户在登录后更改了他的 facebook 个人资料详细信息,如何在我的应用程序中更新 facebook 个人资料?

  5. 5

    登录Java后获取用户个人资料

  6. 6

    Android:尝试根据用户个人资料显示的信息

  7. 7

    使用SocialAuth API显示个人资料详细信息

  8. 8

    用户名和个人资料图片图片在Google中通过Google +登录后未显示

  9. 9

    链接个人资料并登录

  10. 10

    Facebook个人资料登录时间戳

  11. 11

    Google登录-返回空的个人资料

  12. 12

    如何在Sitecore的“社交连接”模块中的“登录”上访问用户个人资料信息

  13. 13

    在不使用图形 API 的情况下使用 facebook 登录后获取用户信息,如姓名、照片和个人资料图片

  14. 14

    显示用户个人资料Devise Rails

  15. 15

    上载个人资料图片并显示

  16. 16

    显示从Github获取的个人资料图片

  17. 17

    显示群组中的个人资料

  18. 18

    显示用户个人资料页面PHP

  19. 19

    显示 Outlook 个人资料图片

  20. 20

    在django-allauth中首次社交登录后,如何强制填充用户个人资料?

  21. 21

    在MVC中使用应用程序登录后如何获取Microsoft帐户个人资料照片

  22. 22

    如何让用户登录php网站后,只能查看他的个人资料

  23. 23

    谷歌登录另一个活动后如何保存谷歌个人资料

  24. 24

    我的个人资料照片仅在我在应用加载时触摸它后才会显示

  25. 25

    Wordpress:在单击个人资料图片时显示 Gravatar 个人资料

  26. 26

    将用户个人资料表与登录详细信息表分开是否有意义

  27. 27

    如何使用xamarin.auth进行Facebook登录并以Xamarin形式获取用户的个人资料信息

  28. 28

    当我知道密码和个人资料信息正确无误时为何无法登录Github感到困惑

  29. 29

    Android登录输入将通过HttpGet JSON发送到服务器并返回用户个人资料信息列表

热门标签

归档