2012-06-10 10 views
7

का उपयोग कर प्रमाणीकरण (क्रमबद्धता कार्यों के साथ अद्यतन कोड - अभी भी/failedRedirect पर रीडायरेक्ट)Node.js उपयोगकर्ता पासपोर्ट

मैं सरल उपयोगकर्ता नाम/पासवर्ड प्रमाणीकरण पासपोर्ट पैकेज का उपयोग, लेकिन नाकाम रहने के चलते रहने के लिए कोशिश कर रहा हूँ। नीचे दिए गए उदाहरण में मैंने यह सत्यापित करने का प्रयास किया है कि प्रमाणीकरण मूल रूप से हमेशा वैध प्रमाणीकरण लौटाता है (भले ही क्या हो जाता है), लेकिन किसी कारण से यह असफल लॉगिन लिंक पर विफल रहता है और पासपोर्ट रीडायरेक्ट करता है।

यदि कोई इस बात को समझने में मेरी सहायता कर सकता है कि इस उदाहरण को कुछ भी प्रमाणित करने के लिए कैसे प्राप्त किया जाए, तो मुझे वहां से प्रबंधित करने में सक्षम होना चाहिए।

कोड coffeescript में है:

express = require "express" 
passport = require "passport" 
LocalStrategy = require("passport-local").Strategy 

passport.use(new LocalStrategy((username, password, done) -> 
    console.log "LocalStrategy invoked" 
    done(null, {id: 1, name: "Marius"}) 
)) 

passport.serializeUser (user, done) -> 
    done null, user 

passport.deserializeUser (obj, done) -> 
    done null, obj 

app = express.createServer() 

app.configure -> 
    app.use express.bodyParser() 
    app.use express.static("./public") 
    app.use express.cookieParser("SOMESECRET") 
    app.use express.session 
    secret: "SOMESECRET" 
    cookie: 
     maxAge: 60000 
    app.use passport.initialize() 
    app.use passport.session() 
    app.set "view", "./srv/views" 
    app.set "view engine", "jade" 

app.get "/login", (req, res) -> 
    res.send "login page" 

app.post "/login", passport.authenticate("local", 
    failureRedirect: "/failedRedirect" 
    successRedirect: "/successRedirect" 
    failureFlash: true) 

app.listen 8082 

हल: ठीक है, मेरा मानना ​​है कि वहाँ कुछ कारणों से मैं यह काम नहीं कर पाने सकते थे। धारावाहिक सामान एक हो सकता है (मैंने परीक्षण नहीं किया है), लेकिन जब जेरेड ने कहा कि उन्हें जरूरी है, तो मैं उन्हें छोड़ रहा हूं (वह पासपोर्ट के लेखक हैं)। अन्य भ्रम व्यक्त संस्करणों और एनपीएम के साथ मेरे भ्रम से संबंधित हो सकता है। मेरा मानना ​​है कि मैंने एक्सप्रेस के नवीनतम वी 2 दोनों का परीक्षण किया है, लेकिन मैंने v3 का भी परीक्षण किया है, जिसे मैं अभी चल रहा हूं। संस्करण तीन के लिए, आपको संभवत: connect-flash मॉड्यूल को गीथब पर भी देखना चाहिए, क्योंकि जेरेड के उदाहरणों में उपयोग की जाने वाली "फ्लैश" सामग्री के लिए कुछ को व्यक्त v3 से बाहर ले जाया गया था (इसलिए मॉड्यूल इसे वापस रखता है ...)। और अंत में, सुनिश्चित करें कि आप उचित नामित इनपुट नामों का उपयोग कर पोस्ट करें (username और password डिफ़ॉल्ट रूप से)।

उत्तर

11

ऐसा लगता है कि आप लॉगिन सत्र स्थापित करने के लिए आवश्यक उपयोगकर्ता क्रमबद्धता तर्क खो रहे हैं। यदि मैं इन दो कार्यों को जावास्क्रिप्ट कोड में जोड़ता हूं, तो यह काम करता है:

passport.serializeUser(function(user, done) { 
    done(null, user); 
}); 

passport.deserializeUser(function(obj, done) { 
    done(null, obj); 
}); 

आप उपयोगकर्ताओं को अपनी आवश्यकताओं के अनुसार क्रमबद्ध करना चाहते हैं। विवरण इस पृष्ठ के निचले हिस्से में हैं: http://passportjs.org/guide/configuration.html

+0

प्रश्न में अद्यतन कोड शामिल करने के लिए प्रश्न में अद्यतन कोड serialization कार्यों, लेकिन प्रमाणीकरण अभी भी मेरे अंत में विफल रहता है। क्या अद्यतन कोड आपके अंत में सफलतापूर्वक प्रमाणीकृत है? धन्यवाद .. –

+0

हाँ, यह करता है। क्या आपका कोड "लोकलस्ट्रेटी ने" संदेश मुद्रित किया है। यह 'app.use (express.errorHandler ({dumpExceptions: true, showStack: true}) को माउंट करने में मदद कर सकता है;) और देखें कि क्या कोई अपवाद फेंक दिया गया है। –

+0

मेरे अंत में भी "आह्वान" संदेश प्रदर्शित नहीं होता है। मैं आपकी गलती का प्रयास करूंगा, कुछ भी देखने पर यह देखने के लिए हैंडलर चीज। –

9

पोस्ट वेरिएबल नाम स्थानीय पासवर्ड रणनीति के साथ परेशानी वाले लोगों के लिए सबसे बड़ा गोचाचा होता है। यह दस्तावेज़ीकरण में शायद बड़ा और बोल्ड होना चाहिए, और शायद उन्हें बदलने के लिए कॉन्फ़िगरेशन मान होना चाहिए।

+0

ऐसा लगता है कि अब उन्हें बदलने के लिए कॉन्फ़िगरेशन मान हैं। इस पृष्ठ के नीचे: http://passportjs.org/guide/username-password/ –

+0

हाँ, यह मुझे दो दिनों के लिए बट में बस थोड़ा सा है। – darethas

1

मैं https://github.com/DanialK/PassportJS-Authentication स्थान से इस लिंक http://danialk.github.io/blog/2013/02/23/authentication-using-passportjs/ डाउनलोड नमूना कोड से succsessfully किया है

केवल एक परिवर्तन routes.js में आवश्यक है परिवर्तन कोड

app.post("/login" ,passport.authenticate('local',{successRedirect : "/",failureRedirect : "/login", })); 

करने के लिए ------ ------------------------

app.post("/login" ,passport.authenticate('local',{failureRedirect : "/login"}), function(req,res){ res.render('your home page here', {user : req.user });}); 
संबंधित मुद्दे