Aquí está el código en mi cabecera base.htmlMi plantilla de Django variable booleana no está funcionando como se esperaba en javascript
<script>
var auth_status = "{{ user.is_authenticated }}"
</script>
{% block scripts %} {% endblock %}
El resto de los scripts en mi sitio son en los guiones de bloque.
En una plantilla hija (dentro del bloque de script y dentro de etiquetas de script) Tengo este código,
if (auth_status) {
//something
}
El error en cuestión es auth_status siempre es cierto, cuando debería ser encendido y apagado dependiendo de si el usuario ha iniciado sesión. Request_context se está transfiriendo a la plantilla, por lo que no debería ser el error.
Gracias
agradable a la vista sin relación a su pregunta, pero tenga en cuenta que no hacer 'si (user_is_authenticated) {hacer cosas; } 'puede ser un problema de seguridad si realmente confías en el valor de esta variable JS. Un usuario podría modificar el valor de la variable JS antes de la ejecución. –
¿De modo que dices que un usuario puede establecer de alguna manera auth_status = true? Entonces, ¿pasar por alto js var sería una solución válida? Ej .: if ({{user.is_authenticated | yesno: "true, false"}}) versus if (auth_status) ?? –
Un usuario malintencionado podría simplemente extraer el código fuente de su página y reemplazar lo que quiera con ... lo que quiera. Hay ** manera ** de implementar ** cualquier ** cliente de seguridad (es decir, en JS) y ** no hay solución **, todo el control de seguridad/acceso debe hacerse desde el servidor (eso es, en tu código de Python). JS no es una extensión de su código de aplicación que se ejecuta dinámicamente, es * algo diferente *, con diferentes restricciones. –