2013-05-02 19 views
5

Desidero sapere qual è la procedura migliore per controllare lo stato di accesso sul lato client. Quello che sto cercando di fare è controllare lo stato di login dell'utente e se non è loggato nella casella popup aperta (casella di login) utilizzando JavaScript.Verifica dello stato di accesso lato client

mi viene in mente 2 opzioni

  1. Effettuare una chiamata AJAX al server e ottenere lo stato di accesso.
  2. Avere una variabile nella pagina HTML e controllare questa variabile con JavaScript sul lato client. Ovviamente non mi fido di questo controllo, I ho ancora tutti i controlli necessari nei miei controller sul lato server .

L'opzione 1 è buona, ma può aggiungere un po 'di ritardo/latenza, quindi potrebbe non essere l'opzione migliore in termini di esperienza utente. O sbaglio, con un buon server (sto pensando di usare i servizi web di Amazon) questo ritardo sarà così minimo e l'utente non lo capirà (la domanda potrebbe sembrare sciocca ma questo è il mio primo sviluppo web quindi per favore sii comprensibile :))

Non riesco a vedere alcun problema con l'opzione 2, correggimi se ho torto. Come ho detto, sto cercando di capire la migliore pratica.

+0

La domanda che mi hai posto è troppo ampia per rispondere ma comunque ho tentato di fare del mio meglio .. Buona fortuna ... puoi accettare anche la risposta ... –

risposta

0

L'opzione 1 sembra la migliore, come è possibile sapere se il cookie in cui si salva l'id utente non è stato mitigato? Per quanto ne so, la migliore pratica è aggiungere un hash al cookie (puoi vedere google farlo nei loro cookie), e quindi usarlo per verificare se i dati nel cookie sono validi sul lato server, usando un segreto e o sale.

http://en.wikipedia.org/wiki/Hash_function

http://en.wikipedia.org/wiki/Salt_(cryptography)

cosa si potrebbe fare in ogni caso anche se è controllare se un cookie esiste con userid nella tua JavaScript lato client, e se non, quindi inviare l'utente alla pagina di login.

https://developer.mozilla.org/en-US/docs/DOM/document.cookie

in questo modo non è necessario un viaggio di andata server per ovviamente disconnesso utenti.

Tuttavia, non è possibile per la prima richiesta che l'utente effettua sul proprio server effettuare il controllo? e se l'utente non è loggato risponde con la pagina di accesso?

+0

Stefan Non ho intenzione di usare i cookies . Avrò una variabile nella mia pagina (che mostra lo stato di login) e controllerò questa variabile con javascript. Non penso che ci sarebbe un problema con questo approccio. Perché anche se per qualche ragione (timeout/alcune persone con cattive intenzioni/...) c'è una discrepanza tra client e server (in termini di stato di accesso) poiché eseguo l'autenticazione/autorizzazione sul lato server per tutti i controller che inoltrerò questo utente per accedere alla pagina. Almeno questo è quello che penso :). –

1

Il modo migliore per evitare il server hit/latenza di rete; Puoi inserire una variabile client che ha lo stato di accesso (come hai detto nella tua domanda), ma cosa principale per evitare hit del server e latenza di rete (AJAX), basta usare la stessa logica che è sul lato server per impostare lo stato di login come falso Supponiamo che la logica sia quella di impostare lo stato di login su false dopo 5 minuti di inattività, è possibile fare lo stesso anche dal lato client.

Quindi nel complesso voglio dire è, implementare la stessa logica alla fine del cliente per impostare lo stato di accesso falsa. e in base a ciò è possibile mostrare la finestra di dialogo di accesso immediatamente con qualsiasi latenza. E in MIGLIORE PRATICA dovresti sempre fare una doppia verifica, ad esempio sul lato server su ogni singola richiesta di materiale autenticato dovresti controllare che lo stato di accesso del client corrisponda allo stato di login del server, poiché lo stato di accesso del client può essere manomesso.

Buona fortuna ...
Felice esplorazione :-)

+1

Grazie :). Penso che andrò con le opzioni 2. Come hai detto, inserirò una variabile client nelle mie pagine e controllerò questa variabile sul lato client per verificare lo stato di accesso. Ma avrò anche tutti i necessari controlli di autenticazione sul lato server. –

+0

Benvenuto in StackOverflow .. La domanda che mi hai posto è troppo ampia per rispondere ma comunque ho tentato di fare del mio meglio .. Buona fortuna ... puoi accettare anche la risposta ... –

Problemi correlati