【问题标题】:Authentication Using Passport js使用 Passport js 进行身份验证
【发布时间】:2015-09-28 05:37:59
【问题描述】:

大家

我正在开发一个使用 IBM db2 作为数据库并使用护照 js 进行身份验证的应用程序。

所以我的问题是如何将来自登录表单的值与存储在数据库中的值进行比较。

passport.use(new LocalStrategy({
      usernameField: 'euser',
      passwordField: 'epass'
},
function(username, password, done){
      process.nextTick(function() {
         /* how do i open connection to db2 and compare username and password 
         with the data stored in database? */
      });  
}
));

我如何打开到 db2 的连接并比较值以验证用户并启动会话。

【问题讨论】:

标签: node.js db2 passport.js passport-local ibm-db2


【解决方案1】:

取自 passport.js 文档;例如,将用户名字段更改为用户名,密码字段更改为密码。如果您愿意,您可能可以将 User 对象与登录结果的变量分配切换为数据库结果。

var username = ibm d2 query results for username;
var password = ibm d2 query results for password;


     var User = {//login form username/password
username: '', //whatever they entered will go here,
password: '' 
};

.... // 以上作为参数传递给 功能(用户名,密码,完成){

User 是从您的登录表单返回的对象。 findOne 是一个 比较用户名属性值的 passportJs 函数 到您分配给变量用户名的数据库查询结果。如果匹配 是成功而不是错误,结果作为用户对象传递给 下一个函数。

function(username, password, done) {
    User.findOne({ username: username }, function(err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
  }
));

如果不存在错误,则函数返回用户对象结果并且 找到了匹配。请注意,这是错误优先样式,因此他返回 null 成功结果的价值,而不仅仅是结果。空入 这种情况意味着没有错误。

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2019-01-31
    • 2019-12-20
    • 2015-08-22
    相关资源
    最近更新 更多