使用everyauth和restify

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?

1个回答

13

你遇到的问题是restify没有且现在也不会有中间件层。以下内容来自restify的作者:

我已经思考了很多,让我担心的是与connect的兼容性越来越强。我无法控制或参与他们的决定。这似乎更像是“如果它能工作得好,那就太好了”。

目前我会将此关闭并标记为“不予修复”。

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

你可以使用connect,并在其上添加restify服务器,然后你可以像everyauth一样使用connect管理你的中间件。

这里有一个很好的样例,我已经在我的系统上成功运行了。

// 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进行连接。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接