
huckepack
In meiner index.ejs habe ich diesen Code:
var current_user = <%= user %>
In meinem Knoten habe ich
app.get("https://stackoverflow.com/", function(req, res){
res.locals.user = req.user
res.render("index")
})
Jedoch auf der Seite erhalte ich
var current_user = [object Object]
und wenn ich schreibe
var current_user = <%= JSON.stringify(user) %>
Ich erhalte:
var current_user = {"__v":0,"_id":"50bc01938f164ee80b000001","agents":...
Gibt es eine Möglichkeit, ein JSON zu übergeben, das sein wird JS-lesbar?

huckepack
Oh, das war einfach, nicht verwenden <%=
verwenden <%-
stattdessen. Zum Beispiel:
<%- JSON.stringify(user) %>
Der erste rendert in HTML, der zweite rendert Variablen (wie sie sind, eval)

Benutzer732456
Aufmerksamkeit!
Wenn der Benutzer über API-Aufrufe erstellt werden kann, würde <%- Sie mit einer ernsthaften XSS-Schwachstelle belasten. Mögliche Lösungen finden Sie hier:
Übergeben Sie Variablen an JavaScript in ExpressJS
Wenn wie ich Ihr Objekt ein entkommenes Zeichen wie enthalten kann /
oder "
Verwenden Sie dann diese robustere Lösung
var current_user = <%- JSON.stringify(user).replace(/\\/g, '\\\\') %>
Dies funktioniert jetzt in der neuesten Version von Express
10192900cookie-checkExpress und ejsyes