Come si fa l’autenticazione in node.js che posso utilizzare dal mio sito web?

Voglio un servizio Node.js per autenticare l’utente del mio sito web. Come posso fare questo?

Voglio implementare l’autenticazione Everyauth usando il metodo della password semplice, non OpenID.

Ho provato https://github.com/jimpick/everyauth-example-password e funziona.

Voglio usare il database per archiviare. Questo script non usa un database. Ho usato MySQL in passato quindi preferisco quello, ma sto bene con qualsiasi altra cosa come MongoDB.

Voglio solo aggiungere un database al mio script. Per favore aiuto.

Devi solo modificare il metodo .authenticate . Poiché la connessione al database è (o dovrebbe essere) un’operazione asincrona, è necessario aggiungere un object promise (consultare la documentazione di ogni autoro ).

Supponendo che tu abbia un ORM con dati utente corrispondenti all’object user con attributi username e password (nel mio esempio userò il motore mongoose), ecco come potrebbe apparire:

 .authenticate( function (login, password) { var promise = this.Promise(); /* setup promise object */ /* asynchrnously connect to DB and retrieve the data for authentication */ db.find({ username:login }, function(err, user) { if (err) return promise.fulfill([err]); if ((!user) || (user.password != password)) return promise.fulfill(['Incorrect username or password!']); promise.fulfill(user); }); return promise; /* return promise object */ }) 

Non l’ho provato, ma secondo la documentazione dovrebbe funzionare. Ricorda che gli errori dovrebbero essere tenuti in serie.

A proposito: se si utilizza solo il metodo della password, non è necessario, si sa, utilizzare un cannone contro una mosca. 🙂 Scrivere il proprio (non necessariamente perfetto, ma funzionante) meccanismo di autenticazione è davvero semplice e se non sai come farlo devi impararlo. Ne trarrà vantaggio in futuro, perché l’autenticazione e la sicurezza in generale sono molto importanti in ogni app web.