如果经过身份验证的Express / Node JS,则将用户数据放入所有路由

时间:2016-03-01 17:00:16

标签: javascript node.js express routes

我想知道是否有办法在会话中提供用户数据,默认情况下是路由的响应。例如写下这样的东西:

app.get("/someRandomPath",PutUserData,function(req,res,next)
{
  res.render("myView",{title:"my page title"})
}

function PutUserData(req,res,next)
{
  if(auth)
  {
   res.send({user:session.user}
   next()
  }
  else next()
}

甚至更好地在应用程序级别执行某些操作,例如app.use(...)? 我想这样做的原因是我想避免在每一条路线中检查用户是否处于Authed状态,并使用不同的数据渲染视图。 我很感激你的帮助。

1 个答案:

答案 0 :(得分:1)

从Express文档中查看res.locals。这可能对你有用。

http://expressjs.com/en/api.html#res.locals

另外,请参阅this answer以获取有关res.locals如何工作的帮助。

 app.use(function(req, res, next){
   res.locals.user = session.user;
   next();
 });

前端(玉石模板,但你可以使用你想要的任何模板引擎)

extends layout

block content   
  p user was set to #{user}