我正在使用nodejs rest api并使用护照Basic Strategy进行身份验证。
当我通过身份验证发送请求时,服务器响应:
未知身份验证策略"基本"
这是我的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 :(得分:0)
您可能错过了初始化护照。你需要:
var app = express();
......
......
app.use(passport.initialize());
答案 1 :(得分:0)
你写过这个吗?
var BasicStrategy = require('passport-http').BasicStrategy;
这是使用BasicStrategy
所必需的。