<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dai una occhiata a come Flask usa le sessioni. Ti risparmieresti un
sacco di grattacapi (tra cui la necessita' di condividere le sessioni su
piu' server quando vuoi distribuire l'applicazione).<br></blockquote>
</div><div><br>
</div></div></blockquote><div>Ho realizzato qualcosa di molto simile a
quello in uso da Flask, ma alla fine sono giunto alla conclusione che
non è poi così usabile come soluzione.<br>
Se salvassi sul client un dizionario serializzato con pickle e poi con
codificato con base64 l'utente se a conoscenza dei dettagli di
implementazione dell'applicazione (in qualche modo viene a sapere che si
usa un framework opensource), potrebbe facilmente ricavarsi i dati di
tale implementazione, quindi decodificare il dizionario, modificarlo e
modificare il cookie con il nuovo valore.<br>
<br>
Avere un hash da qualche parte per verificarne il contenuto
implicherebbe comunque una persistenza dei dati server side perchè
finita la richiesta perdiamo tutti i dati e bisogna salvare l'hash e
quindi poi poterlo riconoscere.<br>
Potrei ovviare al problema usando una keyword "secret" e con un
algoritmo di crittazione a chiave simmetrica, in modo da ricostituire
poi il testo originale e ripete l'algoritmo all'inverso per
deserializzare il dizionario, ma a questo punto dovendo perdere tempo a
fare tutti questi calcoli mi chiedo se realmente sia significativamente
più efficente di una classica soluzione file-based o db based
(attualmente non supportata).<br><br>Se sbaglio qualcosa correggetemi pure.<br>
<br>
Riguardo la possibilità di race conditions per l'implementazione
attuale, come dovrebbe comportarsi il session manager quando il file è
già sotto un lock? Dovrebbe aspettare che il file sia accessibile?
oppure dovrebbe semplicemente sollevare una eccezione, o ritornare
silenziosamente al flusso dell'applicazione senza aver fatto nulla?<br>
<br>
Grazie mille.<br>
PS. se in qualche modo creo disturbi scrivendo qui vi prego di farmelo sapere, grazie.<br>
</div></div>