2016-02-20 4 views
0

Ниже приведена часть клиентского кода приложения node.js с использованием шаблона EJS. Существует окно ввода, и я хочу показать, не пользователь ли пользователь, и показать сообщение в поле ввода. Кроме того, поле ввода также не должно быть.Использование EJS во входное значение не отображается должным образом

Но это не отображается должным образом. Как я могу отображать целое утверждение, включая пробел, а не только «Нужна», но «Нужно войти»?

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

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

Вы визуализируете это на узле? Мне кажется, что он поражает браузер, не интерполированный ... – dandavis

+0

@dandavis Нет, это код .ejs, я тестирую его в Google Chrome ... – Juntae

+1

глядя на ответ, который, вероятно, прав, он браузер интерполирован, но не так. обратите внимание на XSS, если какой-либо из этих материалов может быть динамичным. – dandavis

ответ

1

В EJS <%= foo %> ускользает HTML, в то время как <%- foo %> не делает.

В вашем случае <%= "value='Need to Login'" %> отобразит value=&#39;Need to Login&#39;, что не является тем, что вы хотите.

Замена <%=<%- сделает трюк.

В общем, будьте внимательны при использовании <%-, особенно при отображении произвольных строк или ввода пользователем, так как это может сделать вас уязвимым для XSS.

+0

Он работает исправно, и раньше я задавался вопросом о различии между '<% = и <% -', теперь я получил его, спасибо! – Juntae

Смежные вопросы