2013-06-12 21 views
14

क्या क्लाइंट-साइड पर एनपीएम-मॉड्यूल का उपयोग करना संभव है?उल्का एनपीएम-मॉड्यूल क्लाइंट-साइड?

अधिक विशेष रूप से:

मैं का उपयोग करना चाहते node.js निर्मित क्रिप्टो मॉड्यूल एक पासवर्ड उपयोगकर्ता प्रवेश करती है और एन्क्रिप्ट करने फिर मेरे सर्वर के लिए एक हस्ताक्षर (/ HMAC) के साथ एन्क्रिप्टेड पासवर्ड भेजने के लिए।

मुझे ऐसा करने की ज़रूरत है, क्योंकि मुझे मूल पासवर्ड सर्वर-साइड पुनर्प्राप्त करने में सक्षम होना चाहिए, क्योंकि बाद में मैं इसे ldap-server पर भेज रहा हूं, क्योंकि उपयोगकर्ता को उसी उपयोगकर्ता नाम से प्रमाणित होना चाहिए/पासवर्ड वह उस सर्वर पर पंजीकृत है।

यह मैं क्या किया है:

संकुल में बनाया/क्रिप्टो /: -package.js:

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

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

यह ठीक काम करता है सर्वर पर, लेकिन क्लाइंट पर यह कहता है "संदर्भ त्रुटि: एनपीएम परिभाषित नहीं है"। तो, क्या क्लाइंट-साइड पर क्रिप्टो-मॉड्यूल का उपयोग करना संभव है?

क्या इस लक्ष्य को प्राप्त करने के लिए कोई विकल्प हैं?

धन्यवाद!

संपादित करें: क्या सर्वर पर पासवर्ड सुरक्षित करने के लिए कोई अच्छा विकल्प है, ताकि सर्वर मूल पासवर्ड पुनर्प्राप्त कर सके? मैं ldap() कर लगता है कि - ग्राहक पक्ष पर अनुरोध (जैसे: if(checkLdap(usrname,password)){<login>} else{fail}) आसानी से नजरअंदाज किया जा सकता है

उत्तर

2

इसकी संभव नहीं क्लाइंट की तरफ NPM मॉड्यूल का उपयोग करने के बाद से NPM मॉड्यूल Node.js के माध्यम से एक्सटेंशन हैं जो?

केवल सर्वर अंत पर चलता है। आप क्रिप्टो की तरह एक फ़ाइल उपयोग करना चाहते हैं यदि आप एक ग्राहक के पक्ष केवल संस्करण बनाने के लिए है और आपके उल्का अनुप्रयोग के /client/lib

इस आधिकारिक तौर पर संभव हो सकता है में रख होता है, उल्का इसका समर्थन नहीं करता है।

आपको इस प्रोजेक्ट का उपयोग करके मैन्युअल रूप से आवश्यकताएं शामिल करना होगा: https://github.com/apendua/require

+0

ठीक है आपके उत्तर के लिए धन्यवाद। –

+2

कई एनपीएम मॉड्यूल को सर्वर या क्लाइंट पर उपयोग करने योग्य बनाने के लिए डिज़ाइन किया गया है, न केवल सर्वर। – protometa

+0

@protometa यह हो सकता है लेकिन मुझे नहीं लगता कि उल्का ब्राउज़र के समान तृतीय पक्ष सामग्री के बिना इसका समर्थन करता है। आधिकारिक तौर पर एनपीएम, जो उल्का निर्भर है, सीधे क्लाइंट साइड मॉड्यूल का समर्थन नहीं करता है, इसलिए उल्का उनके साथ क्लाइंट पक्ष के साथ काम नहीं करता है। आप उन्हें ब्राउज़ कर सकते हैं और मैन्युअल रूप से उन्हें शामिल कर सकते हैं जैसे कि आप किसी भी अन्य नोडज परियोजना के लिए करेंगे। – Akshat

13

आप क्रिप्टो की पैकेज निर्देशिका के तहत .npm फ़ोल्डर से क्लाइंट-साइड पर जेएस-फाइलों को जोड़ने की कोशिश कर सकते हैं। तो, अपने 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'); 
}); 
+0

यह शायद काम नहीं करेगा क्योंकि क्लाइंट फ़ाइलों की सामग्री फ़ंक्शन कॉल में लिपटे हो जाती है, इसलिए जब तक ये संकुल स्पष्ट रूप से न हों खुद को वैश्विक विंडो ऑब्जेक्ट में जोड़ें जो वे उपलब्ध नहीं होंगे। –

+0

यह समाधान अब तक पैक की गई प्रत्येक लाइब्रेरी के साथ ठीक काम करता है क्योंकि उनमें से सभी (और अन्य 99% अन्य) स्पष्ट रूप से वैश्विक विंडो ऑब्जेक्ट में स्वयं को जोड़ते हैं। – th0r

+0

धन्यवाद ... ऐसा करने के लिए एक बेहतर तरीका ढूंढ रहा था, लेकिन यह अभी के लिए करेगा। –

1

आप browserify उपयोग कर सकते हैं आप ग्राहक के पक्ष चाहते हैं सब सब NPM मॉड्यूल के साथ एक .js बंडल बनाने के लिए। देखें:

2013 Meteor NPM Packages

5

अब आप https://github.com/elidoran/cosmos-browserify उपयोग कर सकते हैं इस संग्रह करने के लिए। मैंने पहले लपेटे हुए पैकेज का इस्तेमाल किया था और उन्हें अपडेट करने और नए बनाने के लिए वास्तविक दर्द था। अब ब्राउज़र समर्थन के साथ मैं पुस्तकालय को कोड की कई पंक्तियों के साथ शामिल कर सकता हूं। उनका उदाहरण देखें कि इसे कैसे करें। मैं इसे यहां प्रकाशित नहीं करता क्योंकि यह परिवर्तन का विषय हो सकता है।

+0

मैंने कोशिश की, यह आसान था और यह अच्छी तरह से काम किया। सिफारिश की! शीर्षक "एक उल्का ऐप में उपयोग करें" शीर्षक के तहत निर्देशों का पालन करें। – joeytwiddle

संबंधित मुद्दे