2014-06-26 8 views
5

हैपी और इसकी ऑथ-कुकी प्लगइन के लिए वहां कई उदाहरण नहीं हैं लेकिन यहां एक मार्ग सुरक्षित करने के प्रयास में मेरे पास अभी तक क्या है। ध्यान दें, उदाहरण मैंने देखा है HAPI के एक पुराने संस्करण का उपयोग कर रहे हैं जो नहीं लगता है के सबसे काफी इस स्थिति के लिए लागू करते हैं और im उम्मीद कर बस कुछ सरल लापता im करने के लिए:हैपी-ऑथ-कुकी सत्र रणनीति लोड करने में विफल रहा

var Hapi = require('hapi'); 
var Mongoose = require('mongoose'); 

Mongoose.connect('mongodb://localhost/rfmproducetogo'); 

var server = new Hapi.Server(8080, "localhost"); 

server.pack.register([{ 
    plugin: require("lout") 
}, { 
    plugin: require('hapi-auth-cookie') 
}, { 
    plugin: require("./plugins/togo") 
}, { 
    plugin: require("./plugins/auth") 
}], function(err) { 
    if (err) throw err; 
    server.auth.strategy('session', 'cookie', { 
     password: 'shhasecret', 
     cookie: 'wtfisthisfor', 
     isSecure: false, 
     redirectTo: false 
    }); 
    server.start(function() { 
     console.log("hapi server started @ " + server.info.uri); 
    }); 
}); 

और मेरे टोगो प्लगइन मैं में

exports.create = function(plugin) { 
    plugin.route({ 
     method: 'POST', 
     path: '/togo/add', 
     handler: function(request, reply) { 
      produce = new Produce(); 
      produce.label = request.payload.label; 
      produce.price = request.payload.price; 
      produce.uom = request.payload.uom; 
      produce.category = request.payload.category; 

      produce.save(function(err) { 
       if (!err) { 
        reply(produce).created('/togo/' + produce._id); 
       } else { 
        reply(err); 
       } 

      }); 
     }, 
     config: { 
      auth: 'session' 
     } 
    }); 
}; 

त्रुटि im देख यह है इस मार्ग सत्र का उपयोग करने के सेटअप:

/home/adam/Projects/bushhog/node_modules/hapi/node_modules/hoek/lib/index.js:421 
    throw new Error(msgs.join(' ') || 'Unknown error'); 
     ^
Error: Unknown authentication strategy: session in path: /togo/add 
    at Object.exports.assert (/home/adam/Projects/bushhog/node_modules/hapi/node_modules/hoek/lib/index.js:421:11) 
    at /home/adam/Projects/bushhog/node_modules/hapi/lib/auth.js:123:14 
    at Array.forEach (native) 
    at internals.Auth._setupRoute (/home/adam/Projects/bushhog/node_modules/hapi/lib/auth.js:121:24) 
    at new module.exports.internals.Route (/home/adam/Projects/bushhog/node_modules/hapi/lib/route.js:118:43) 
    at /home/adam/Projects/bushhog/node_modules/hapi/lib/router.js:110:25 
    at Array.forEach (native) 
    at /home/adam/Projects/bushhog/node_modules/hapi/lib/router.js:107:17 
    at Array.forEach (native) 
    at internals.Router.add (/home/adam/Projects/bushhog/node_modules/hapi/lib/router.js:104:13) 

नोड 0.10.28 चल रहा है, hapijs 6.x, HAPI लेखन-कुकी 1.02

+0

आप अभी भी वर्तमान में एक समस्या का सामना कर रहे हैं रजिस्टर करने की आवश्यकता? मुझे गिटहब में आपका रेपो मिला और ऐसा लगता है कि यह ठीक काम करता है। – dylants

+0

hi @dylants मैं प्लगइन के भीतर लेख रणनीति को पंजीकृत करके इस मुद्दे को हल करने में सक्षम था और यह काम करता है लेकिन मुझे यकीन नहीं है कि यह सबसे अच्छा तरीका है। मुझे हमेशा यह सुनिश्चित करना होगा कि ऑथ प्लगइन पहले लोड हो – battlemidget

उत्तर

1

यह समस्या तब होती है जब आप वास्तव में उपलब्ध होने से पहले प्रमाणीकरण रणनीति का उपयोग करने का प्रयास करते हैं।

आप किसी दिए गए दायरे के साथ व्यक्तिगत, छोटे प्लगइन में कार्यक्षमता को विभाजित करके पहले से ही एक अच्छा एप्लिकेशन सेटअप का पालन कर रहे हैं।


अद्यतन: यहाँ, कि इस समस्या के लिए एक समर्पित ट्यूटोरियल है how to fix „unknown authentication strategy“


प्रमाणीकरण और अपने प्लग-इन है कि प्रमाणीकरण पर भरोसा स्थापित करने के लिए एक अच्छा तरीका बनाने के लिए है एक अतिरिक्त "प्रमाणन प्लगइन" जो आपकी वांछित रणनीतियों को जोड़ता है और आपके अन्य प्लगइन में निर्भरता के रूप में उपयोग किया जा सकता है।

hapi auth plugin example

exports.register = function (server, options, next) { 

    // declare/register dependencies 
    server.register(require('hapi-auth-cookie'), err => { 

    /** 
    * Register authentication strategies to hapi server 
    * 
    * We’re using hapi-auth-cookie plugin to store user information on 
    * client side to remember user data on every website visit 
    * 
    * For sure, we could and will add more authentication strategies. 
    * What’s next: JWT (we highly welcome pull requests to add JWT functionality!) 
    */ 
    server.auth.strategy('session', 'cookie', { 
     password: 'ThisIsASecretPasswordThisIsASecretPassword', 
     cookie: 'hapi-rethink-dash', 
     redirectTo: '/login', 
     isSecure: false 
    }); 

    server.log('info', 'Plugin registered: cookie authentication with strategy »session«') 

    next() 

    }) 

} 

exports.register.attributes = { 
    name: 'authentication', 
    version: '1.0.0' 
} 

में अपने /plugins/togo आप किसी निर्भरता (server.dependency([array-of-deps]) के साथ) जिसका अर्थ है HAPI पहले प्रमाणन प्लगइन पंजीकृत करता है और निर्भर करता है लोगों को बाद में के रूप में authentication plugin निर्धारित किया है।

आप इस तरह अपने प्लग-इन रजिस्टर: एक विस्तृत उदाहरण के लिए

server.register([{ 
    plugin: require('./plugins/authentication') 
}, { 
    plugin: require("./plugins/togo") 
}], function(err) { 
    // handle callback 
}) 

चेक hapi-rethinkdb-dash

आशा है कि मदद करता है!

0

को ध्यान में रखना अगर आप एक प्लगइन के अंदर server.dependency का उपयोग की तरह मार्कस Poehls किया है, बल्कि यह है कि निर्भरता

server.register([{ 
    plugin: require('hapi-auth-cookie') 
},{ 
    plugin: require('./plugins/authentication') 
}, { 
    plugin: require("./plugins/togo") 
}], function(err) { 
    // handle callback 
}) 
संबंधित मुद्दे