首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node js中的passport-local模块验证(登录)密码时出错

使用node js中的passport-local模块验证(登录)密码时出错
EN

Stack Overflow用户
提问于 2015-04-02 21:46:35
回答 1查看 370关注 0票数 0
代码语言:javascript
复制
Server running at http://localhost:3000/

/home/sankar/Cloud/config/strategies/local.js:26
        if (!(user.authenticate(password))) 
                   ^
TypeError: Object { firstName: 'raju',
lastName: 'raju',
email: 'raju@070',
username: 'raju',
password: 'raju',
_id: 551b7ca79177c00c1342a3ee,
__v: 0 } has no method 'authenticate'
 at Promise.<anonymous>                 (/home/sankar/Cloud/config/strategies/local.js:26:15)
  at Promise.<anonymous>      (/home/sankar/Cloud/node_modules/mongoose/node_modules/mpromise/lib/promis       e.js:177:8)
  at Promise.EventEmitter.emit (events.js:95:17)
  at Promise.emit (/home/sankar/Cloud/node_modules/mongoose/node_modules/mpromise/lib/promis       e.js:84:38)
  at Promise.fulfill (/home/sankar/Cloud/node_modules/mongoose/node_modules/mpromise/lib/promis      e.js:97:20)
  at /home/sankar/Cloud/node_modules/mongoose/lib/query.js:1400:13
  at model.Document.init (/home /sankar/Cloud/node_modules/mongoose/lib/document.js:254:11)
  at completeOne (/home/sankar/Cloud/node_modules/mongoose/lib/query.js:1398:10)
  at Object.cb (/home/sankar/Cloud/node_modules/mongoose/lib/query.js:1155:11)
  at Object._onImmediate (/home/sankar/Cloud/node_modules/mongoose/node_modules/mquery/lib/utils.js      :137:16)

我得到这个错误,只有当我试图登录与正确的细节意味着不正确的用户名,这是明确抛出错误,但不是为了正确的凭证。它在SignUp上运行得很好。

Local.js代码:

代码语言:javascript
复制
   var passport = require('passport'),
   LocalStrategy = require('passport-local').Strategy,
   User = require('mongoose').model('User');

 module.exports = function()
 {
 passport.use(new LocalStrategy(function(username, password, done) 
 {
    User.findOne(
    {
        username: username
    },
    function(err, user)
    {
        if (err) 
        {
            return done(err);
        }
        if (!user) 
        {
            return done(null, false, 
            {
                message: 'Unknown user'
            });
        }
        if (!(user.authenticate(password))) 
        {
            return done(null, false, 
            {
                message: 'Invalid password'
            });
        }
        return done(null, user);
    });
  }));
  }

在我的user.js中,我添加了用于验证的方法。

代码语言:javascript
复制
  UserSchema.methods.hashPassword = function(password) {
  return crypto.pbkdf2Sync(password, this.salt, 10000,
  64).toString('base64');
  };
  UserSchema.methods.authenticate = function(password) {
  return this.password === this.hashPassword(password);
  };
EN

回答 1

Stack Overflow用户

发布于 2015-04-02 22:50:16

您尚未定义身份验证方法。将其附加到您的架构:

代码语言:javascript
复制
var user= mongoose.Schema({ 
    username: 'string',
    password: 'string'
});
authSchema.methods.authenticate = function( pwd ) {
    return ( this.password === pwd );
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29414564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档