在节点 js 中使用护照本地模块验证(登录)密码时出错
Error while authenticating(sign in) password using passport-local module in node js
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)
只有当我尝试使用正确的详细信息登录时,我才会收到此错误,这意味着不正确的用户名,它明确抛出错误,但不是正确的可信度。它工作正常 注册 .
本地.js代码:
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);
});
}));
}
在我的用户中.js我添加了身份验证方法。
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);
};
尚未定义身份验证方法。将其附加到架构:
var user= mongoose.Schema({
username: 'string',
password: 'string'
});
authSchema.methods.authenticate = function( pwd ) {
return ( this.password === pwd );
};
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- jQuery自定义验证比较多个输入的序列
- 尽管链接成功并已成功下载,但未找到NPM模块
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 将登录验证模块与现有的Angular JS应用程序集成
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- 无法使用节点请求模块进行基本的 HTTP 身份验证
- 如何使用babel为我的js服务模块实现经过身份验证的es 7装饰器
- 如何使用这些Node模块通过文件或URL接受HTML,然后输出JSON作为现有HTML元素的验证
- 即使手动ssh可以工作,也无法使用带有ssh2模块的nodejs进行身份验证
- 对象在节点验证器模块中没有方法替换
- Jquery验证器模块和成功后的函数调用
- 验证由xml-crypto节点模块生成的xml签名