gpt4 book ai didi

node.js - 添加中间件以检查 API key 和密码

转载 作者:搜寻专家 更新时间:2023-11-01 00:25:22 26 4
gpt4 key购买 nike

在决定使用 node 和 restify 编写我的下一个 API 之后,我才刚刚开始学习 node.js。只有几个用户可以访问该 API,并且它将是一个严格私有(private)的用户 - 其他任何人都不能访问它。

基本上,我需要检查是否为每个请求提供了(并且有效)“key”和“pass”参数。所以,我想我可以添加一些在其他所有事情之前执行的中间件来进行检查……例如:

var restify = require('restify');

var server = restify.createServer({
name: 'test'
});

server.use(function(req, res, next) {
if (req.params.key == null) {
console.log("No API key supplied");
return next(new restify.NotAuthorizedError("No API key supplied"));
}
});
server.use(restify.bodyParser());


server.listen(8888, function() {
console.log('%s listening at %s', server.name, server.url);
});

server.get('/test', function(req, res, next) {
res.send('Hello World');
return next();
});

浏览到 localhost:8888/test 得到 {"code":"NotAuthorized","message":"No API key supplied"} 这就是我想要的.

但是,浏览到 http://localhost:8888/test?key=a 仍然给出相同的消息..

很明显,我的做法不对。有人可以指出我正确的方向吗?

提前致谢。

最佳答案

我需要添加 restify.queryParser() 来解析 GET 参数。现在,这有效:

var restify = require('restify');

var server = restify.createServer({
name: 'test'
});

server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(function(req, res, next) {
if (req.query.key == null) {
console.log("No API key supplied");
return next(new restify.NotAuthorizedError("No API key supplied"));
} else return next();
});

server.listen(8888, function() {
console.log('%s listening at %s', server.name, server.url);
});

server.get('/test', function(req, res, next) {
res.send('Hello World');
return next();
});

关于node.js - 添加中间件以检查 API key 和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21463637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com