我的护照认证功能未运行

时间:2019-02-19 09:26:19

标签: mongodb express mongoose passport.js

除了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
            }
            });
        };

如果未检出数据库中的密码和用户提供的密码,则应该返回消息:“密码错误”。它仅在验证用户名。即使密码错误,它也会返回“用户”。

1 个答案:

答案 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