使用 ejs 嵌入用户对象

Embedding user object using ejs

我目前正在 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: &#39;test@gmail.com&#39;,
  roles: [ &#39;user&#39; ],
  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 来做到这一点?

已解决! EJS 有一个 html 转义函数,它和

一样简单
<%- user %>

而不是

<%= user %>

在 Swig 中, {{ user | json | safe }} 表示:

Return 这个 JavaScript 对象的字符串表示 user 和 return 我这个字符串强制它不能被自动转义。

翡翠

!{JSON.stringify(user)} 未转义

#{JSON.stringify(user)} 转义

在Ejs中,

<%- JSON.stringify(user) %> 未转义

<%= JSON.stringify(user) %> 逃脱