除了user.comparehashandpass()函数之外,我拥有该函数(请参见代码),所有其他功能都在工作。
这是一个nodejs express猫鼬应用程序。一段时间前工作正常,但我不知道出了什么问题
除了user.compareHashAndPass()
之外,代码均有效 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: 'Incorrect username.' });
}
user.compareHashandpass(password, user.password, function (err,
res) {
console.log("code reaches here")
if (err) {
return done(err);
} else {
return done(err, false, {
message: 'Incorrect password'
});
}
});
return done(null, user);
});
}
));
我已将model.method包含在模型文件中。就像我说的,它以前工作得很好。
userSchema.methods.compareHashandpass = function(password, hash, cb){
bcrypt.compare(password, hash, function(err, res) {
if (err) return cb(err);
if (res === false) {
return false
} else {
return true
}
});
};
如果未检出数据库中的密码和用户提供的密码,则应该返回消息:“密码错误”。它仅在验证用户名。即使密码错误,它也会返回“用户”。
答案 0 :(得分:0)
在函数中,您返回true / false而不是回调( @Test
public void test_XQuery() throws Exception {
runXQuery("/1.json", "/XQuery.xq", "/1_Output.json");
}
private void runXQuery(String datafile, String xQueryFile, String expectedOutput) throws Exception {
InputStream dataStream = getClass().getResourceAsStream(datafile);
InputStream xQueryStream = getClass().getResourceAsStream(xQueryFile);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
run(dataStream, xQueryStream, outputStream);
String json = outputStream.toString();
String expected = StreamUtils.copyToString(getClass().getResourceAsStream(expectedOutput), Charset.defaultCharset());
assertEquals(expected, json);
}
private static void run(InputStream input, InputStream query, OutputStream output) throws SaxonApiException {
Configuration config = Configuration.newConfiguration();
Processor processor = new Processor(config);
XQueryCompiler compiler = processor.newXQueryCompiler();
XQueryExecutable executor = compiler.compile(query);
XQueryEvaluator evaluator = executor.load();
Source sourceInput = new SAXSource(new InputSource(input));
DocumentBuilder builder = processor.newDocumentBuilder();
XdmNode doc = builder.build(sourceInput);
evaluator.setContextItem(doc);
// QName qName = new QName("input");
// evaluator.setExternalVariable(qName, doc);
Serializer out = processor.newSerializer(output);
out.setOutputProperty(Serializer.Property.METHOD, "json");
evaluator.run(out);
}
)try:
cb