javascript - 使用 ejs 嵌入用户对象

标签 javascript node.js passport.js ejs swig-template

我目前正在使用 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: &#39;<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="582c3d2b2c183f35393134763b3735" rel="noreferrer noopener nofollow">[email protected]</a>&#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 来做到这一点?

最佳答案

在 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/

相关文章:

javascript - $this 不适用于当前元素

linux - 从单 Node 过渡到多 Node hadoop same

javascript - Google Chrome 未经授权的响应导致弹出窗口

azure - Passport-azure-ad 单点登录 (SSO)

javascript - 根据对象的属性将对象数组转换为散列

php - 提交后如何将变量从javascript传递给php

node.js - 如何使用 `pug` 模板继承发出两次相同的 block ?

node.js - 找到 Webpack 配置文件但未配置条目

angularjs - Satellizer 和 Passport 集成

javascript - 使用react-select设置默认值不起作用