Necesitamos una API en nodejs, con una base de datos en mongodb.
Es necesario preparar la API y la base de datos.
Los métodos necesarios son:
<strong>login(user,pass): retorna un sesionkey</strong>
Se validan los datos contra la base de datos y se crea en una tabla temporal el usuario con su sesión, validez para 60 minutos.
Al llamar al método sin parámetros, lanza un proceso para eliminar las sesiones que han caducado.
Cada vez que se llama al método login, elimina la sesión del usuario y crea la nueva.
La sesión key es un GUID o simililar.
El password se almacena en MD5.
<strong>getcontent(sesionkey,lat,lon,type(string),speed(int)): retorna objecto</strong>
Disponemos de una colección con datos geolocalizados. Este método retorna los 50 más cercanos a las coordenadas indicadas. Type y speed, no son usados de momento.
<strong>logs(sesionkey,type(string),lat,lon,speed(int)): retorna true o false</strong>
Este método almacena en una colección la información recibida. No se almacena la sesionkey, se almacena el id del usuario asociado.
Colecciones en MongoDB:
<span style="line-height: 1.6em;">secure_users(_id,username,pass,date_insert,date_lastlogin)</span>
secure_sesions(sesionkey,date_expire)
content(_id,title,content,latlon(float[]),time)
logs(date_insert,user_id,type,latlon,speed)
Hi,
I´ve been working extensively with REST Apis with Node.js in production with high traffic scenarios (see my linkedin for details).I think I'm able to delivery a high quality project for your company.
I always implement best practices for security in node.js (CSRF, session id length,signed and httponly cookies, headers and so on..).
Also I´m always following Node.js community to be updated with latest security like last week version update v0.10.21.
My offer is for the development of the project, including mocha test, and a reproducible development environment built with Vagrant and docker.io. (Virtualbox image alternatively)
I let you choose if you want the project to be implemented in express or restify framework, I have experience with both.
Regards.
Alfonso.