2014-03-26 4 views
0

Как генерировать хэш паролей пользователей в Node.js? Я использую Express.js и MongoDB. Мне это нужно для авторизации/регистрации.Создать хэш-пароли в Node.js (Express + MongoDB)?

+0

https://github.com/sendanor/node-crypt3 будет использовать хэширования паролей, встроенный в ядро ​​системы. Я думаю, что это лучший подход здесь. – alex

ответ

3

Вы можете использовать pwd.

Простая регистрация Пример:

User.count({ email: email }, function (error, count) { 
     if (count === 0) { 
      pwd.hash(password, function (error, salt, hash) { 
       if (!error) { 
        var user = new User({ 
         email: email, 
         salt: salt, 
         hash: hash 
        }).save(function (error, newUser) { 
         if (!error) { 
          User.findOne({ email: email }, function (error, user) { 
           if (!error) { 
            if (user) { 
             pwd.hash(password, user.salt, function (error, hash) { 
              if (!error) { 
               if (hash === user.hash) { 
                req.session.user = email; 
                res.json(200); 
               } else { res.json(403, 'Password is wrong!');} 
              } 
             }); 
            } else { res.json(404, 'Error!'); } 
           } 
          }); 
         } 
        }); 
       } 
      }); 
     } else { res.json(409, 'User exist!'); } 
    }); 
+10

Добро пожаловать на обратный вызов, ад, мой друг. –

+0

let Promise = require ('bluebird'); let pwd = Promise.promisifyAll (require ('pwd')); pwd.hashAsync (пароль). Then (функция (соль, хеш) { // код sucess is here }). Catch (функция (ошибка) { // Код ошибки идет здесь. ;) }); –

0

Используйте модуль password-hash

НПМ В серверной перспективе это: npm install password-hash

Затем в коде:

var hash = require("password-hash"); 
hash.generate(password)); 

Читать через API, и вы увидите это предлагает различные добавлены методы безопасности, такие как соление вашего пароля перед его использованием.

Смежные вопросы