流星npm模块客户端



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

更具体地说:

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

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

我是这样做的:

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

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

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

在服务器端运行正常,但在客户端显示"Reference Error: Npm is not defined"。那么,是否有可能在客户端使用加密模块?

是否有其他方法可以达到这个目标?

谢谢!

编辑:是否有一种好的替代方法可以安全地将密码传递给服务器,以便服务器可以检索原始密码?我认为在客户端做ldap()请求(如:if(checkLdap(usrname,password)){<login>} else{fail})可以很容易地绕过?

您可以尝试从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');
});

您现在可以使用https://github.com/elidoran/cosmos-browserify来存档它。我以前使用的是包装包,更新和创建新包真的很痛苦。现在有了browserify的支持,我可以只用几行代码就包含一个库。看看他们如何做的例子。我没有在这里发表,因为它可能会发生变化。

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

如果你想使用像crypto这样的文件,你必须做一个客户端版本,并把它放在你的流星应用程序的/client/lib

虽然这可能是官方的,但Meteor不支持。

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

你可以使用browserify在客户端构建一个包含所有你想要的Npm模块的.js包。看到:

2013 Meteor NPM Packages

最新更新