使用ejsembedded用户对象
我目前正在使用护照模块在Node.js中实现Web应用程序的身份validation。 在渲染索引页时,我将用户对象返回给用户
app.route('/').get(function(req, res) { res.render('index', { isAuthenticated: req.isAuthenticated(), user: req.user //User Object provided by passport }); });
我试图用ejs将用户对象embedded到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,所以我认为这是某种stream水线。 我想知道如何使用ejs做这个?
在Swig中, {{ user | json | safe }}
{{ user | json | safe }}
{{ user | json | safe }}
意思是:
返回此JavaScript对象user
string表示forms,并返回此string,强制它不被自动转义。
在翡翠,
!{JSON.stringify(user)}
转义
#{JSON.stringify(user)}
逃脱
在Ejs,
<%- JSON.stringify(user) %>
转义
<%= JSON.stringify(user) %>
转义
解决! EJS有一个html转义函数,就像
<%- user %>
代替
<%= user %>