4

我正在尝试使用everyauth 来处理使用restify 创建的rest api 的身份验证。但是找不到起点。我希望做类似的事情:

var restify = require('restify');  
var everyauth = require('everyauth');
var server = restify.createServer();
server.use(everyauth.middleware());

但是restify 不接受everyauth 中间件。

我该如何设置restify和everyauth?

4

1 回答 1

13

您遇到的问题是 restify 没有,并且 current 不会有中间件层。

以下来自restify的作者

我已经考虑了很多,这里让我担心的是注册与connect evermore的兼容性。我无法控制或输入他们决定做什么。这似乎更像是“如果它有效,那就太好了”。

我现在要用“不会修复”来结束这个:\

https://github.com/mcavage/node-restify/issues/89

您可以做的是使用 connect 并在其上添加 restify 服务器,然后您可以使用 connect 来管理您的中间件,如everyauth。

这是一个很好的示例,我让它在我的系统上运行良好。

// Restify server config here
var server = restify.createServer({
  name: 'restify-test',
  version: '1.0.0',
});

// ...

// Connect config here
var connectApp = connect()
    .use(connect.logger())
    .use(connect.bodyParser())
    .use(connect.query())
    .use(connect.cookieParser())
    // And this is where the magic happens
    .use("/api", function (req, res) {
             server.server.emit('request', req, res);
         });

connectApp.listen(8080);

https://gist.github.com/2140974

然后您可以根据文档添加everyauth 进行连接。

希望有帮助。

于 2012-12-03T20:11:19.627 回答