Tengo una aplicación web que es parte de Rails y parte Backbone. Algunas cosas como un sistema de comentarios que he implementado están escritas principalmente en Javascript en el lado del cliente. El backend Rails simplemente maneja la persistencia pasando JSON hacia adelante y hacia atrás.¿Cómo administro la sesión de usuario actual en el lado del cliente?
Cuando renderizo páginas desde el servidor, manejo quién puede ver lo que es fácil. Puedo decir cosas tales como
<li class="comment">
<span class="comment_text"><%= @comment.text %></span>
<% if user_signed_in? and current_user == @comment.author %>
<a class="delete" href="some delete url">Delete Comment</a>
<% end %>
</li>
Y eso sólo hará que el enlace para eliminar un comentario particular, si el usuario actual es el autor del comentario. No hay problema.
Sin embargo, ahora que estoy renderizando comentarios en el lado del cliente usando JavaScript templates (que están en caché afaik), no tengo acceso a current_user
. No puedo decir si el usuario que está usando mi aplicación es el autor del comentario o no, así que no puedo controlar lo que ve.
Claro, no podrá eliminar el comentario de ninguna manera porque yo también autorizo en el servidor, pero preferiría no mostrarlo en primer lugar.
¿Cómo puedo lograr esto?
Me encantaría algunos enlaces a los recursos sobre este tema, así como las respuestas, porque parece que no puedo encontrar ninguno, aunque me parece que este es un tema que debería haber sido cubierto en innumerables blogs.
¿Este enfoque es más fácil de usar? El usuario puede cambiar la ID del usuario actual – ecleel
. Es seguro de usar, siempre que tenga protecciones del lado del servidor en su lugar, de modo que incluso si el usuario cambia la identificación e intenta presionar eliminar, obtendrá un error 401 no autorizado. Mostrar y no mostrar el botón Eliminar es para comodidad del usuario, no de seguridad. – AwDogsGo2Heaven