在输入值中使用 EJS 无法正确显示

Using EJS into input value doesn't show properly

下面是我的 node.js 应用程序使用 EJS 模板的客户端代码的一部分。有一个输入框,如果用户没有登录,我想显示,在输入框中显示消息。而且,输入框也应该不能。

但是显示不正确,我如何显示包括 space 在内的整个语句,不仅是 'Need',还有 'Need to Login'?

<input type="text" <%= (isAuthenticated) ? '' : "value='Need to Login'" %> />

// view : 'Need
// It doesn't show after space

在 EJS 中 <%= foo %> 转义 HTML,而 <%- foo %> 不转义。

在您的情况下,<%= "value='Need to Login'" %> 将呈现 value=&#39;Need to Login&#39;,这不是您想要的。

<%= 替换为 <%- 即可。

但一般来说,在使用 <%- 时要慎重,尤其是在显示任意字符串或用户输入时,因为它可能使您容易受到 XSS.

的攻击