我目前正在使用 Passport 模块在 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: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="582c3d2b2c183f35393134763b3735" rel="noreferrer noopener nofollow">[email protected]</a>',
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 来做到这一点?
最佳答案
在 Swig, {{ user | json | safe }}
意思是:
返回此 JavaScript 对象的字符串表示形式 user
并向我返回这个字符串,强制它不被自动转义。
Jade 质
!{JSON.stringify(user)}
未转义
#{JSON.stringify(user)}
逃脱
在 Ejs 中,
<%- JSON.stringify(user) %>
未转义
<%= JSON.stringify(user) %>
逃脱
关于javascript - 使用 ejs 嵌入用户对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35195853/