2017-07-29 64 views
0

這是我的護照JS本地策略:我可以在Passport策略中使用Salt而不是純文本密碼嗎?

'use strict'; 

/** 
* Module dependencies. 
*/ 
var passport = require('passport'), 
    LocalStrategy = require('passport-local').Strategy, 
    User = require('mongoose').model('User'); 

module.exports = function() { 
    // Use local strategy 
    passport.use(new LocalStrategy({ 
      usernameField: 'username', 
      passwordField: 'password' 
     }, 
     function(username, password, done) { 
      User.findOne({ 
       //username: new RegExp(username, 'i') 
       username: String(username).toLowerCase() 
      }, function(err, user) { 
       if (err) { 
        console.log('ERR: ', err); 
        return done(err); 
       } 
       if (!user) { 
        return done(null, false, { 
         message: 'Unknown user or invalid password' 
        }); 
       } 
       if (!user.authenticate(password)) { 
        return done(null, false, { 
         message: 'Unknown user or invalid password' 
        }); 
       } 
       return done(null, user); 
      }); 
     } 
    )); 
}; 

我需要使用電子郵件和鹽漬密碼(存儲在localStorage的)在網頁視圖(不是瀏覽器)重新驗證自己的用戶。

在這種策略中,如果使用哈希/鹽密碼重新驗證用戶,我會改變什麼? (或者是一個可怕的想法?)

回答

1

默認使用passportjs,您的密碼將被醃+哈希而這一結果將被存儲在數據庫中,這樣你就永遠不會採用這種技術

下使用純文本密碼,在本地存儲中存儲密碼(甚至是醃製的)是一種不好的做法。你應該只問你的用戶他的密碼,而不要存儲它!最好的辦法是存儲一個令牌,並檢查它是否是一個有效的(JWT令牌是偉大的)

一個例子:https://scotch.io/tutorials/easy-node-authentication-setup-and-local

+0

啊$ H * T你說得對。以下是使用sessionId重新進行身份驗證的更好方法:http://justbuildsomething.com/cordova-and-express-session/ – tonejac

相關問題