在Express JS / Passport JS / Jade应用程序中将变量传递给JavaScript

时间:2012-05-17 23:43:11

标签: express pug passport.js

这基本上是这里问题的延续:Nodejs Passport display username

app.get('/hello', function(req, res) {
    res.render('index.jade', { name: req.user.username });
});

因此,用户通过PassportJS登录,然后转到index.jade,其中正文中包含#{name},该值将替换为req.user.username的值。

问题:是否可以在req.user.username的JavaScript中使用index.jade的值?我尝试将其值赋给变量,但它不起作用。

我一直在使用以#{name}作为值隐藏输入的技巧:

input(type='hidden', id='variableName', value='#{name}')

然后JavaScript可以使用以下方法访问此值:

$("#variableName").val()

这很有效。但它是否有任何潜在的缺点,如安全问题?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您有几个选择。其中一个是你做的,把价值放在你的html里面。你也可以通过这样做来解决它:

script
   window.name = #{name};

这将创建一个设置变量的内联脚本。你有另一个选择是使用ajax。这意味着您可能需要额外的路由来回复该请求。