7

我正在构建我的第一个流星应用程序,并且需要能够创建一个新的路由处理程序来处理 oauth 回调。我查看了 server.js 并发现 connect.app 上下文在meteor_bootstrap下可用。虽然这似乎不起作用:

if (Meteor.is_server) {
  Meteor.startup(function () {
    var app = __meteor_bootstrap__.app;
    app.use('/callback',function (req,res) {
      res.writeHead(404);
      res.end();
      return;
    });
  });
}

想法?

4

3 回答 3

8

这个解决方案的问题是你的中间件被放在了堆栈的底部。因此,包罗万象的流星处理程序将始终在您的“/回调”处理程序之前运行。

解决此问题的一种非常老套的方法(直到流星释放其适当的路由支持)是在堆栈顶部的处理程序中拼接:

__meteor_bootstrap__.app.stack.splice (0, 0, {
    route: '/hello',
    handle: function (req,res, next) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end("hello world");
        return;
    }.future ()
});
于 2012-06-05T05:56:01.483 回答
6

您可以使用Meteor Router智能包实现此目的:

Meteor.Router.add({
  '/callback': 404
})
于 2012-12-06T00:15:19.050 回答
2

一些答案导致路由现在在服务器上是不可行的,而不是hacky。这是一个已知问题,听起来路由是待办事项列表上的热门项目。

于 2012-04-13T23:17:46.393 回答