javascript 从另一个模块的函数传递变量

nmpmafwu  于 2023-01-24  发布在  Java
关注(0)|答案(2)|浏览(133)

我是JS/NodeJ的新手。
我设法通过了Google Firebase的认证

验证Firebase.js:

function checkAuth(req, res, next) {
    if (req.header('auth-token')) {
      admin.auth().verifyIdToken(req.header('auth-token'))
        .then((decodedToken) => {
            //return uid
            let uid = decodedToken.uid
          next()
        }).catch((err) => {
            console.log(err);
          res.status(403).send('Unauthorized')
        });
    } else {
       
      res.status(403).send('Unauthorized')
    }
  }


module.exports.checkAuth = checkAuth;

我在下面的其他文件中使用它;

路线.js

const verify_firebase = require('./verifyFirebase').checkAuth;

router.get('/', verify_firebase, (req,res) => {
    res.json("verified");
})

“/”路由由verifyFirebase.js中的verify_firebase函数保护。如何从routes.js访问uid变量?因为我需要在安全路由中访问此uid。

fwzugrvs

fwzugrvs1#

我想这可能有用

function checkAuth(req, res, next) {
    if (req.header('auth-token')) {
      admin.auth().verifyIdToken(req.header('auth-token'))
        .then((decodedToken) => {
            //return uid
            let uid = decodedToken.uid
            req.decoded = {
              uid:uid
            };
          next()
        }).catch((err) => {
            console.log(err);
          res.status(403).send('Unauthorized')
        });
    } else {
       
      res.status(403).send('Unauthorized')
    }
  }


module.exports.checkAuth = checkAuth;
zhte4eai

zhte4eai2#

您可以将uid变量设置为req.uid,并在routes.js文件中使用它,如下所示:

    • 验证Firebase. js**
...
        .then((decodedToken) => {
            //return uid
            req.uid = decodedToken.uid
          next()
        }).catch((err) => {
            console.log(err);
...
    • 路线. js**
const verify_firebase = require('./verifyFirebase').checkAuth;

router.get('/', verify_firebase, (req,res) => {
    console.log('my uid:', req.uid);
    res.json("verified");
})

请记住,如果您要使用typescript,您还需要为它定义正确的类型。

相关问题