Ho un'app Web che è in parte Rails e parte Backbone. Alcune cose come un sistema di commenti che ho implementato sono scritte principalmente in Javascript sul lato client. Il backend di Rails gestisce semplicemente la persistenza passando JSON avanti e indietro.Come gestisco la sessione utente corrente dal lato client?
Quando eseguo il rendering delle pagine dal server, gestisco chi riesce a vedere cosa è facile. Posso dire cose come
<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>
E che renderà solo il link per cancellare un commento particolare se l'utente corrente è l'autore del commento. Nessun problema.
Tuttavia, ora che sto rendendo commenti sul lato client utilizzando JavaScript templates (che sono memorizzati nella cache afaik), non ho accesso a current_user
. Non riesco a capire se l'utente che sta usando la mia app sia autore o meno del commento, quindi non posso controllare ciò che vede.
Certo, non sarà in grado di eliminare il commento in entrambi i casi perché anch'io autorizzo sul server, ma preferisco non mostrare hin il collegamento in primo luogo.
Come posso realizzare questo?
Mi piacerebbe avere alcuni collegamenti alle risorse su questo argomento e risposte perché non riesco a trovarlo, anche se a me sembra che questo sia un argomento che avrebbe dovuto essere trattato in innumerevoli blog.
Questo approccio è stato salvato? L'utente può modificare l'ID di currentUser – ecleel
È sicuro da usare, purché si disponga anche di protezioni laterali del server, in modo che anche se l'utente cambia l'ID e preme eliminare, riceverà un errore non autorizzato 401. Mostrare e non mostrare il pulsante Elimina è per comodità dell'utente, non per sicurezza. – AwDogsGo2Heaven