2016-07-29 5 views
-1

私はnodejs rest apiを使用しており、認証にはパスポート基本戦略を使用しています。nodejs authenticate not working

私は認証で要求を送信すると、サーバーがで応答:

不明な認証戦略 "の基本的な" これは私のBasicStrategyです:

passport.use(new BasicStrategy(function (userName, password, callback) { 
    User.findOne({username: userName}, function (err, user) { 
     if (err) return callback(err); 
     if (!user) return callback(null, false); 
     user.checkPassword(password, function (err, isMatch) { 
      if (err)return callback(err); 
      if (!isMatch) return callback(null, false); 
      return callback(null, user); 
     }) 
    }) 
})); 

これは私のルータです。

router.get("/", passport.authenticate('basic', { session: false }), function (req, res) { 
    bookModel.find(function (err, books) { 
     if (!err) { 
      return res.json(books); 
     } else { 
      res.statusCode = 500; 
      log.error("Internal error (%d): %s", res.statusCode, err.message) 
      return res.json({error: "Server error"}); 
     } 
    }); 
}); 

私のクライアントのJava okhttpに:

private static void getBooks() throws IOException 
    { 
     Request request; 
     Response response; 
     String credentials = Credentials.basic("Axror", "topsecret"); 
     System.out.println(credentials); 
     request = new Request.Builder() 
      .url("http://localhost:1337/api/book/") 
      .header("Authorization", credentials) 
      .build(); 
     response = client.newCall(request).execute(); 
     System.out.println(response.body().string()); 
    } 

答えて

0

あなたはパスポートを初期化するために見逃しているかもしれません。あなたはする必要があります:

var app = express(); 
...... 
...... 
app.use(passport.initialize()); 
+0

いいえ、私はapp.jsのパスポートを初期化しています。 –

0

これは書いてありますか?

var BasicStrategy = require('passport-http').BasicStrategy; 

BasicStrategyを使用するために必要です。