Sto lavorando a una piccola partita multiplayer. Mi piacerebbe introdurre l'autenticazione. Sto usando Node.js e Socket.io.autenticazione socket.io dopo il socket stabilito
Quando l'utente arriva alla pagina principale, voglio che si uniscano al gioco indipendentemente dal fatto che abbiano effettuato l'accesso o meno, ma non saranno in grado di fare nulla all'interno di esso (solo guardare).
Come è possibile procedere con l'autenticazione dell'utente sulla presa già aperta?
Posso mantenere l'autenticazione ancora se hanno lasciato il sito e sono tornati? Puoi passare un cookie attraverso una presa di rete?
EDIT
per continuare la mia domanda. Uno dei possibili pensieri che ho avuto è quello di fornire la connessione websocket, quindi quando cercano di accedere, passa nome utente e password come un messaggio al websocket.
client.on('onLogin', loginfunction);
ho potuto poi prendere il nome utente e la password, controllare sul database, quindi prendere l'ID di sessione della presa e passarlo da qualche parte per dire che la sessione è autenticata a quell'utente.
È sicuro? Potrei ancora implementare un cookie sul socket in modo che possano tornare? C'è un modo dentro socket.io di affermare che il socket è ora autenticato invece di controllare manualmente ogni messaggio ricevuto?
Acclamazioni
Esiste un modo forse di impostare la connessione come autenticata all'interno socket.io dopo che la connessione è stata stabilita e stretta di mano completa? L'utente può fornire i dettagli di accesso quando è pronto per una connessione esistente, il server può convalidare e restituire un ID sessione univoco. Il lato client javascript potrebbe quindi salvare un cookie per uso futuro. –
Vedere [questo articolo] (http://www.danielbaulig.de/socket-ioexpress/) su come autenticare le sessioni di socket.io. – fent
Sì, ho già letto quell'articolo. Anche se sono abbastanza contento di impostare un cookie, non consente l'accesso alla stessa pagina se il socket è già aperto. Soffre anche presumibilmente se l'utente ha disabilitato i cookie? –