11

क्या अपाचे में बस Node.js में मूल लेख करना संभव है?Node.js http मूल auth

http://doc.norang.ca/apache-basic-auth.html

मुझे पता है कि अगर एक्सप्रेस का उपयोग कर या कनेक्ट मैं बीच-बर्तन कार्यक्षमता जोड़ने और उपयोगकर्ता सत्यापन कर सकते हैं, लेकिन मैं पूरे क्षेत्र को प्रतिबंधित करने के कोशिश कर रहा हूँ (मैं एक से उपयोगकर्ताओं को प्रमाणित करने की जरूरत नहीं है डेटाबेस केवल कुछ परिभाषित उपयोगकर्ताओं) - मैं उबंटू का उपयोग कर रहा हूं।

https://github.com/kaero/node-http-digest

यह कुछ मैं क्या कर सकता है, लेकिन मुझे यकीन है कि अगर "उजागर" या सीधे उपयोगकर्ता और पासवर्ड कोड में लिखने के लिए पर्याप्त सुरक्षित है नहीं कर रहा हूँ।

बहुत धन्यवाद।

उत्तर

15

Passport बुनियादी लेख को लागू करने के लिए एक स्वच्छ तंत्र प्रदान करता है। मैं अपने एंगुलरजेस-आधारित यूआई के साथ-साथ मेरी रीस्टफुल एपीआई दोनों की सुरक्षा के लिए अपने नोड.जेएस एक्सप्रेस ऐप में इसका उपयोग करता हूं। पासपोर्ट अप और अपने एप्लिकेशन में प्रदर्शित करने के लिए निम्न करें: स्थापित पासपोर्ट http

  • NPM पासपोर्ट स्थापित

  • NPM (शामिल मूल प्रमाणीकरण के लिए "BasicStrategy" वस्तु)

  • खोलें

    var passport = require('passport')  
    var BasicStrategy = require('passport-http').BasicStrategy 
    
    passport.use(new BasicStrategy(
        function(username, password, done) { 
        if (username.valueOf() === 'yourusername' && 
         password.valueOf() === 'yourpassword') 
         return done(null, true); 
        else 
         return done(null, false); 
        } 
    )); 
    
    // Express-specific configuration section 
    // *IMPORTANT* 
    // Note the order of WHERE passport is initialized 
    // in the configure section--it will throw an error 
    // if app.use(passport.initialize()) is called after 
    // app.use(app.router) 
    app.configure(function(){ 
        app.use(express.cookieParser()); 
        app.use(express.session({secret:'123abc',key:'express.sid'})); 
        app.set('views', __dirname + '/views'); 
        app.set('view engine', 'jade'); 
        app.set('view options', { 
        layout: false 
        }); 
        app.use(express.bodyParser()); 
        app.use(express.methodOverride()); 
        app.use(express.static(__dirname + '/public')); 
        app.use(passport.initialize()); 
        app.use(app.router); 
        app.use(logger); 
    }); 
    
    // Routes 
    
    app.get('/', passport.authenticate('basic', { session: false }), routes.index); 
    app.get('/partials/:name', routes.partials); 
    
    // JSON API 
    
    app.get('/api/posts', passport.authenticate('basic', { session: false }), api.posts); 
    app.get('/api/post/:id', passport.authenticate('basic', { session: false }), api.post) 
    // --Repeat for every API call you want to protect with basic auth-- 
    
    app.get('*', passport.authenticate('basic', { session: false }), routes.index); 
    
+4

आपका उदाहरण बहुत अच्छा काम करता है। गिटहब पर पासपोर्ट-http द्वारा प्रदान किए गए एक की तुलना में यह वास्तव में सरल (और समझने में आसान) है। – Stilltorik

+0

धन्यवाद Stilltorik! – TWright

3

पर एक नज़र डालें: user authentication libraries for node.js?

यह आपके सवाल का 100% का उत्तर नहीं मिलता है - लेकिन शायद यह मदद करता है।

+0

हाय @nivoc हो सकता है, धन्यवाद जवाब देने के लिए, हाँ शायद मध्यम-सामान जाने का रास्ता है, मैंने इस मामले के परिदृश्य के लिए कोई अन्य समाधान नहीं देखा है। – Jaime

12

रखें थी: अपने app.js और निम्नलिखित जोड़ें रों

app.use(express.basicAuth(function(user, pass) { 
    return user === 'test' && pass === 'test'; 
})); 

लाइन से पहले

app.use(app.router); 

को http साथ मूल प्रमाणीकरण सभी मार्गों की रक्षा के लिए

3

मुझे लगता है कि अच्छा विकल्प http-auth मॉड्यूल

// Authentication module. 
var auth = require('http-auth'); 
var basic = auth.basic({ 
    realm: "Simon Area.", 
    file: __dirname + "/../data/users.htpasswd" // gevorg:gpass, Sarah:testpass ... 
}); 

// Application setup. 
var app = express(); 
app.use(auth.connect(basic)); 

// Setup route. 
app.get('/', function(req, res){ 
    res.send("Hello from express - " + req.user + "!"); 
}); 
+3

मुझे लगता है कि आप एक अस्वीकरण है कि आप 'http-auth' के रखरखावकर्ता यहां उचित होंगे। –

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