流星Npm模块客户端?

时间:2013-06-12 15:01:33

标签: client meteor npm

是否可以在客户端使用Npm-Modules?

更具体地说:

我想使用node.js内置加密模块来加密用户输入的密码,然后将带有签名的加密密码(/ hmac)发送到我的服务器。

我需要这样做,因为我必须能够检索服务器端的原始密码,因为之后我将把它发送到ldap-server,因为用户应该使用相同的用户名进行身份验证/他在该服务器上注册的密码。

这就是我所做的:

在packages / crypto /中创建: -package.js:

Package.on_use(function(api) { api.add_files('crypto.js',['server','client']);});

-crypto.js:     crypto = Npm.require("crypto");

它在服务器上工作正常,但在客户端上显示“参考错误:未定义Npm”。 那么,是否可以在客户端使用加密模块?

有没有其他方法可以实现这一目标?

谢谢!

编辑: 有没有什么好的替代方法可以安全地将密码输入服务器,以便服务器可以检索原始密码? 我认为在客户端做ldap() - 请求(如: if(checkLdap(usrname,password)){<login>} else{fail})可以轻松绕过吗?

4 个答案:

答案 0 :(得分:14)

您可以尝试在crypto的包目录下的.npm文件夹中添加客户端所需的js文件。 因此,您的package.js文件可能如下所示:

Package.describe({
  summary: 'Description of your crypto package'
});

Npm.depends({
  'crypto': '1.0.0'
});

Package.on_use(function (api) {
  api.add_files('crypto.js', 'server');
  api.add_files('.npm/node_modules/crypto/crypto.js', 'client');
});

答案 1 :(得分:5)

您现在可以使用https://github.com/elidoran/cosmos-browserify对此进行归档。之前我使用过包装,更新它们并创建新包装真的很痛苦。现在有了browserify支持,我可以使用几行代码包含库。看看他们的例子如何做到这一点。我不会在这里发布,因为它可能会发生变化。

答案 2 :(得分:2)

在客户端无法使用Npm模块,因为Npm模块是node.js的扩展,只能在服务器端运行。

如果您想使用像crypto这样的文件,您必须制作一个仅限客户端的版本并将其放在Meteor应用程序的/client/lib

虽然这可能是正式的,但Meteor并不支持这一点。

您必须使用此项目手动包含requirejs:https://github.com/apendua/require

答案 3 :(得分:1)

您可以使用browserify构建一个.js包,其中包含您在客户端所需的所有Npm模块。参见:

2013 Meteor NPM Packages