我目前正在使用护照模块在Node.js中为Web应用程序实施身份验证。我在渲染索引页面时将用户对象返回给用户
app.route('/').get(function(req, res) {
res.render('index', {
isAuthenticated: req.isAuthenticated(),
user: req.user //User Object provided by passport
});
});
我正在尝试使用ejs将用户对象嵌入到DOM中:
<!--Embedding The User Object-->
<script type="text/javascript">
var user = <%= user%>;
</script>
但是存在一些编码问题。这是我在浏览器中查看源代码时的输出:
<!--Embedding The User Object-->
<script type="text/javascript">
var user = { email: 'test@gmail.com',
roles: [ 'user' ],
created: Thu Feb 04 2016 19:13:16 GMT+1100 (AEDT),
__v: 0,
_id: 56b3081cb406f8156cd3798a };
</script>
我正在关注一个使用swig的示例,其中它们处理编码,如下所示:
<!--Embedding The User Object-->
<script type="text/javascript">
var user = {{ user | json | safe }};
</script>
我对swig不太熟悉所以我认为它是某种流水线。我想知道如何使用ejs做到这一点?
答案 0 :(得分:1)
在Swig中, {{ user | json | safe }}
表示:
返回此JavaScript对象user
的字符串表示形式,并返回此字符串,强制它不会自动转义。
在Jade,
!{JSON.stringify(user)}
未转义
#{JSON.stringify(user)}
已转义
在Ejs中,
<%- JSON.stringify(user) %>
未转义
<%= JSON.stringify(user) %>
已转义
答案 1 :(得分:0)
解决! EJS有一个html转义函数,就像
一样简单<%- user %>
而不是
<%= user %>