He estado haciendo esto para acceder a las variables pasadas a la plantilla EJS a través de res.render de Express:
router.route("/build") .get([isLoggedIn, finishedRegistration], function(req, res){ res.render("build", {loggedInUser: req.loggedInUser}); })Y luego utilizándolos en el lado del cliente dentro de las etiquetas de script según sea necesario:
<script> var user = <%- JSON.stringify(loggedInUser) %> //do something with stringified variable //do another thing with it </script>Esta solución se da en muchas preguntas de Stackoverflow, y funciona bien, pero si miras el código fuente en el navegador...
<script> var user = {"tokens":-3,"_id":"615c62ba5d2315162893a4ac","username":"dev","email":"shg.webdev... (and so on)Vaya, todo el mundo y su perro pueden ver los datos que se encadenan. Esto me parece vulnerable. ¿Hay alguna forma alternativa que no exponga datos como ese? O, ¿puedo ocultar los datos en cadena para que no se vean en la fuente?