使用Node.JS从一个函数向另一个函数返回值

鸡翼24

我正在使用MEAN堆栈在登录界面上工作。我设法使它能够使用PassportJS工作。我现在的问题是,我需要一种让我的客户端知道登录的人是管理员还是用户(用户角色)的方法。这些信息可从我的MongoDB获得。

我的API调用流程如下:

app.post('/login', passport.authenticate('local'), authRoutes.loginCheck);

首先,它运行passport.authenticate,在下面的函数中进行调用

function verifyCredentials(username, password, done) // username & password from what user provide when logging in
{
    console.log('VC');
    User.findOne({username: username}, function(err, user) //query Mongo
    {
        console.log(user); // User role is available here, in JSON format
        if(user === null) // if no username in database, do this
        {
            console.log('Username does not exist in database');
        }
        else
        {
            user.comparePassword(password, function(err, match) // function written to compare hashed password in Mongo & password provided by user
            {
                if(match)
                {
                    done(null, {id: username, name: username});
                    return user; // this is not the correct syntax, but the idea is, I want to send over the user details here, so I can access the role later
                }
                else
                {
                    done(null, null);
                }
            });
        }
    });
}

使用此语法调用verifyFunction。

passport.use(new LocalStrategy(verifyCredentials));

成功调用该函数后,服务器将执行该函数的第二部分,即loginCheck。

module.exports.loginCheck = function(req, res)
{ 
    console.log('Calling loginCheck route');
    // I generate some sort of jwt token here
    // payload, body, blah blah blah ...
    console.log(req.body);
    res.json({
                authenticated: req.isAuthenticated(), //built-in authentication function, returns true or false
                token: token // sends over token
                role: user.role // want to send over something like this    
            }); // sends all these to client side as JSON
}

由于这两个函数位于不同的文件中,因此我不清楚是否需要某些内容,或者只是将额外的参数传递给loginCheck函数。我已经尝试了后者,但是没有用。

我可以想到的一种方法是在loginCheck函数中执行另一个Mongo查询,但这有点多余。

甚至对于我来说,使用一个特定的关键字来搜索Google肯定也会有很大的帮助,因为我不知道我应该寻找什么。原因是因为我是NodeJS的新手,因此我还不熟悉大多数术语。

我认为这些代码就足够了,但是如果需要我提供更多代码,请告诉我,我会这样做。提前致谢 !!

塔尔加特·梅捷别科夫

要将控制权传递给下一条匹配的路由,您需要使用next该传递作为路由中的第三个参数:

function verifyCredentials(req, res, next) {
    User.findOne({username: req.body.username}, function(err, user) //query Mongo
    {
        if(user === null) {
            return next(new Error('Username does not exist in database'));
        } else {
            user.comparePassword(req.body.password, function(err, match) {
                if(match) {
                    next(null, {id: username, name: username});
                } else {
                    next(new Error('not match'));
                }
            });
        }
    });
}

app.post('/login', verifyCredentials, authRoutes.loginCheck);

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ProcessingJS将返回值从一个函数传递到另一个函数的语法?

来自分类Dev

如何使用数组的返回值(在我的例子中是“右”和“左”)从一个函数(“提取”)到另一个函数(“BinToDec”)?

来自分类Dev

在c++中使用一个函数的返回值作为另一个函数的参数

来自分类Dev

如何使用itertools将返回的值从一个函数传递给另一个函数?

来自分类Dev

在Golang中使用另一个函数返回值?

来自分类Dev

Javascript在另一个函数中使用返回值

来自分类Dev

如何在Javascript的另一个函数中使用返回值?

来自分类Dev

如何在Javascript的另一个函数中使用返回值?

来自分类Dev

将WP移至另一个域->无法使用函数返回值

来自分类Dev

如何在对象文字中使用另一个JS函数的返回值

来自分类Dev

我想在另一个函数中使用一个函数的返回值,而无需再次运行该函数。(蟒蛇)

来自分类Dev

使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

来自分类Dev

使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

来自分类Dev

如何在另一个函数中使用带有参数的函数的返回值

来自分类Dev

从一个函数返回所有可能的输出,然后在另一个函数中使用它

来自分类Dev

如何从Node.js函数获取返回值,该函数包含来自另一个应用程序的数据库查询

来自分类Dev

Python Tkinter-如何从一个函数到另一个函数使用值?

来自分类Dev

Python Tkinter-如何从一个函数到另一个函数使用值?

来自分类Dev

如何从JS函数返回值并将其发送到Node js中的另一个JS脚本?

来自分类Dev

从一个函数传递操纵变量以在另一个函数中使用

来自分类Dev

C ++如何使用从一个函数到另一个函数的变量?

来自分类Dev

在另一个函数之后使用js函数

来自分类Dev

在另一个函数之后使用js函数

来自分类Dev

使用函数绑定“&”将值从一个指令传递到另一个指令

来自分类Dev

prod()函数在另一个函数中使用时返回一个常数

来自分类Dev

如何从异步函数返回多个值以在另一个函数中使用

来自分类Dev

Python:如何仅从一个函数(使用asyncio.gather执行的多个函数)中获取返回值

来自分类Dev

如何从另一个函数调用一个函数-Node JS

来自分类Dev

如何在另一个函数中的一个函数中使用值

Related 相关文章

  1. 1

    使用ProcessingJS将返回值从一个函数传递到另一个函数的语法?

  2. 2

    如何使用数组的返回值(在我的例子中是“右”和“左”)从一个函数(“提取”)到另一个函数(“BinToDec”)?

  3. 3

    在c++中使用一个函数的返回值作为另一个函数的参数

  4. 4

    如何使用itertools将返回的值从一个函数传递给另一个函数?

  5. 5

    在Golang中使用另一个函数返回值?

  6. 6

    Javascript在另一个函数中使用返回值

  7. 7

    如何在Javascript的另一个函数中使用返回值?

  8. 8

    如何在Javascript的另一个函数中使用返回值?

  9. 9

    将WP移至另一个域->无法使用函数返回值

  10. 10

    如何在对象文字中使用另一个JS函数的返回值

  11. 11

    我想在另一个函数中使用一个函数的返回值,而无需再次运行该函数。(蟒蛇)

  12. 12

    使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

  13. 13

    使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

  14. 14

    如何在另一个函数中使用带有参数的函数的返回值

  15. 15

    从一个函数返回所有可能的输出,然后在另一个函数中使用它

  16. 16

    如何从Node.js函数获取返回值,该函数包含来自另一个应用程序的数据库查询

  17. 17

    Python Tkinter-如何从一个函数到另一个函数使用值?

  18. 18

    Python Tkinter-如何从一个函数到另一个函数使用值?

  19. 19

    如何从JS函数返回值并将其发送到Node js中的另一个JS脚本?

  20. 20

    从一个函数传递操纵变量以在另一个函数中使用

  21. 21

    C ++如何使用从一个函数到另一个函数的变量?

  22. 22

    在另一个函数之后使用js函数

  23. 23

    在另一个函数之后使用js函数

  24. 24

    使用函数绑定“&”将值从一个指令传递到另一个指令

  25. 25

    prod()函数在另一个函数中使用时返回一个常数

  26. 26

    如何从异步函数返回多个值以在另一个函数中使用

  27. 27

    Python:如何仅从一个函数(使用asyncio.gather执行的多个函数)中获取返回值

  28. 28

    如何从另一个函数调用一个函数-Node JS

  29. 29

    如何在另一个函数中的一个函数中使用值

热门标签

归档