【问题标题】:Overriding Meteor's oauth package覆盖 Meteor 的 oauth 包
【发布时间】:2013-09-10 16:10:18
【问题描述】:

我需要覆盖 Meteor 的 oauth 包中 oauth_server.js 中的一个函数。

我要换——

var closePopup = function(res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var content =
        '<html><head><script>window.close()</script></head></html>';
  res.end(content, 'utf-8');
};

类似的东西 -

var closePopup = function(res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var content =
        '<html><head><script>window.location.href = "http://www.google.com/";</script></head></html>';
  res.end(content, 'utf-8');
};

这个包是一个核心流星包,所以我不认为我可以删除它并添加一个修改版本。

我尝试将编辑后的变量(函数)添加到我的主服务器代码中,但没有看到流星的行为发生任何变化。

非常感谢,丹尼尔。

【问题讨论】:

    标签: javascript oauth meteor


    【解决方案1】:

    另一种选择是覆盖我最近需要用我自己的覆盖OAuth._checkRedirectUrlOrigin 的函数。因为该函数表示如果需要在流星源代码中覆盖它,我是这样做的:

    Meteor.startup(function () {
      Package['oauth'].OAuth._checkRedirectUrlOrigin = function (redirectUrl) {
        console.log(redirectUrl);
        var appHost = "http://localhost:3000";
        var appHostReplacedLocalhost = Meteor.absoluteUrl(undefined, {
          replaceLocalhost: true
        });
        return (
          redirectUrl.substr(0, appHost.length) !== appHost &&
          redirectUrl.substr(0, appHostReplacedLocalhost.length) !== appHostReplacedLocalhost
        );
      };
      // testing if it worked :)
      Meteor.setTimeout(function () {
        console.log(Package['oauth'].Oauth._checkRedirectUrlOrigin.toString());
      }, 5000);
    });
    

    【讨论】:

    • 哇。这正是我一直在寻找的。谢谢!我只是不知道如何实际覆盖流星包方法。
    【解决方案2】:

    您需要制作一个包来覆盖现有的包。

    如果您想替换oauth 的文件,您应该创建一个新包,其中包含来自 oauth 的包中的所有文件。

    然后将这个新包放入/packages 并运行meteor add oauth 以将其添加到您的项目中。新包将覆盖现有的标准流星之一。

    你需要考虑这个选项,这意味着你必须在每次流星更新它的包时保持它是最新的。

    【讨论】:

    • 我想覆盖 oauth 包。当我创建一个修改过的包并尝试“meteor add oauth”时,我得到“oauth:没有这样的包”
    • 您是否将此包添加到/packages 文件夹中?它叫做oauth?之前我不知道您要替换哪个特定的 oauth 包?是普通的“oauth”吗?
    • 顺便说一句,如果您想使用 Emily 昨天的回答,您需要运行 meteor remove oauth 并添加您的包,但该步骤略有不同。请记住,您需要删除 standard-app-packages 并手动添加所有您想要的,而不是 oauth,而是使用您的自定义包
    • 在哪里可以获得所有标准应用程序包的列表?
    • 是的,就是简单的“oauth”。
    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多