2015-03-22 13 views
5

तो मैं jsonwebtoken लाइब्रेरी के साथ मिलकर पासपोर्ट-ट्विटर प्राप्त करने में कामयाब रहा, लेकिन इसे ठीक से काम करने के लिए मुझे एक्सप्रेस-सत्र को मिडलवेयर के रूप में उपयोग करना होगा। मैं सत्र जोड़ना नहीं चाहता क्योंकि मैं टोकन वापस करने के लिए jsonwebtoken का उपयोग कर रहा हूं।पासपोर्ट और जेडब्ल्यूटी

यहाँ कोड autheticate.js

router.get('/twitter', function(req, res, next){ 

    passport.authenticate('twitter', {session: false}, function(err, user, info){ 
    if(err){ return next(err); } 

    if(user){ 
     var token = createToken(user); 
     console.log(token); 
     return res.json({token: token}); 
    } else { 
     return res.status(401).json(info); 
    } 
    })(req, res, next); 
}); 

है मैं पहले से ही सत्र कहा: झूठी तर्क के रूप में है, लेकिन server.js पर यह त्रुटि थूकना, कि मैं एक्सप्रेस-सत्र उपयोग करने की आवश्यकता रहती है।

server.js

var express  = require('express'); 
var path   = require('path'); 
var logger  = require('morgan'); 
var bodyParser = require('body-parser'); 
var mongoose  = require('mongoose'); 
var passport  = require('passport'); 
var session  = require('express-session'); 
var config  = require('./config'); 

mongoose.connect('mongodb://localhost', function() { 
    console.log("Connected to the database"); 
}) 

require('./passport')(passport); 

var app = express(); 

var authenticate = require('./routes/authenticate')(app, express, passport); 
var api   = require('./routes/api') (app, express, passport); 
// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(session({ 

    secret: config.TOKEN_SECRET, 
    resave: true, 
    saveUninitialized: true, 
})); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(passport.initialize()); 



app.use('/auth', authenticate); 
app.use('/api', api); 

app.get('*', function(req, res) { 
    res.sendFile(__dirname + '/public/app/views/index.html'); 
}); 


app.listen(3000, function(err) { 
    if(err) { 
    return res.send(err); 
    } 
    console.log("Listening on port 3000"); 
}); 

तो जब भी मैं app.use (सत्र()) को हटाने और पासपोर्ट चहचहाना के साथ प्रमाणित करने का प्रयास करें। मुझे यह त्रुटि मिलेगी

त्रुटि ओथ रणनीति को app.use (एक्सप्रेस-सत्र) की आवश्यकता है);

मुझे पता है कि उस समाधान को जोड़ने का स्पष्ट समाधान है, लेकिन मैं सत्र का उपयोग नहीं करना चाहता हूं। क्या ओथ 0.1 को वास्तव में सत्र का उपयोग करने की आवश्यकता है?

+0

अभी तक इस प्रश्न का कोई जवाब है? –

+0

मैं भी इसे हल करना चाहता हूं। – Nivesh

उत्तर

2

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

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