使用 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: '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 来做到这一点?
已解决! 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) %>
逃脱
我目前正在 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 来做到这一点?
已解决! 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) %>
逃脱