javascript - Is this bad practice for res.locals? (Node.js, express) - Stack Overflow

I was wondering if using res.locals like in this code example is bad practice or if there can occur any

I was wondering if using res.locals like in this code example is bad practice or if there can occur any problems if you use it this way:

app.use((req, res, next) => {
    const session = req.cookies.session
    if (session) {
        db.admin.auth().verifySessionCookie(session, true)
            .then((decodedData) => {
                res.locals.userId= decodedData.uid
                next();
            })
            .catch(() => {
                res.locals.userId = false
                next();
            })
    } else {
        res.locals.userId = false
        next();
    }

app.get("/", async (req, res) => {
    console.log(res.locals.userId)
    res.render("home.hbs")
})

Basically I:

  1. I verify the session-cookie in app.use (Im using firebase auth)
  2. I set the res.locals.userId = userId
  3. And then use the local i just set in the app.get

(I need to do it this way because I need the userId in my view, otherwise I need to run the verifySessionCookie function 2 times to get the userId which I want to avoid)

I was wondering if using res.locals like in this code example is bad practice or if there can occur any problems if you use it this way:

app.use((req, res, next) => {
    const session = req.cookies.session
    if (session) {
        db.admin.auth().verifySessionCookie(session, true)
            .then((decodedData) => {
                res.locals.userId= decodedData.uid
                next();
            })
            .catch(() => {
                res.locals.userId = false
                next();
            })
    } else {
        res.locals.userId = false
        next();
    }

app.get("/", async (req, res) => {
    console.log(res.locals.userId)
    res.render("home.hbs")
})

Basically I:

  1. I verify the session-cookie in app.use (Im using firebase auth)
  2. I set the res.locals.userId = userId
  3. And then use the local i just set in the app.get

(I need to do it this way because I need the userId in my view, otherwise I need to run the verifySessionCookie function 2 times to get the userId which I want to avoid)

Share Improve this question asked May 12, 2021 at 22:22 eekeek 572 silver badges7 bronze badges 1
  • What makes you think it would be bad practice? It's documented as being "useful for exposing request-level information such as the request path name, authenticated user, user settings, and so on." – blex Commented May 12, 2021 at 22:26
Add a ment  | 

1 Answer 1

Reset to default 8

res.locals is explicitly designed as a place for you to put things that later parts of the request handling want/need to use and it is often used for template rendering. So, this is precisely what it is supposed to be used for.

I was wondering if using res.locals like in this code example is bad practice or if there can occur any problems if you use it this way

No bad things will happen. This is exactly what res.locals is for. See the doc reference for further confirmation.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742246169a4408043.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信