2016-08-31 3 views
6

मेरे पास एक मोंगोडीबी + नोडजेएस एक्सप्रेस सर्वर है, वेबपैक चल रहा है और उपयोगकर्ता को डेटाबेस में प्रमाण-पत्र के साथ पंजीकृत करने में सक्षम है। अब जब उपयोगकर्ता लॉग इन करता है तो मैं प्रमाणीकरण और सत्र जोड़ना चाहता हूं। मैं Passport.js देख रहा हूं लेकिन यह समझ में नहीं आता कि सभी को एक साथ कैसे रखा जा सकता है।मोंडो डीबी + नोडजेएस एक्सप्रेस के साथ रिएक्टजेएस रिएक्ट राउटर और रेडक्स में लॉगिन प्रमाणीकरण और सत्र कैसे जोड़ें?

इसके लिए सबसे अच्छा तरीका क्या होगा? किसी भी उदाहरण और मार्गदर्शन की सराहना की जाएगी।

अभी तक ये मेरे सेट अप हैं।

सर्वर के लिए:

var express = require('express'); 
var path = require('path'); 
var config = require('../webpack.config.js'); 
var webpack = require('webpack'); 
var webpackDevMiddleware = require('webpack-dev-middleware'); 
var webpackHotMiddleware = require('webpack-hot-middleware'); 
var bodyParser = require('body-parser'); 
var MongoClient = require('mongodb').MongoClient; 
var ObjectId = require('mongodb').ObjectID; 

var app = express(); 
var db; 

var compiler = webpack(config); 

app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath})); 

app.use(webpackHotMiddleware(compiler)); 

app.use(express.static('dist')); 

app.use(bodyParser.json()); 

app.post('/api/users/', function(req, res) { 
    console.log('Req body', req.body); 
    var newUser = req.body; 
    db.collection('users').insertOne(newUser, function(err, result) { 
    if(err) console.log(err); 
    var newId = result.insertedId; 

    db.collection('users').find({_id: newId}).next(function(err, doc) { 
     if(err) console.log(err); 
     res.json(doc); 
    }) 
    }) 
}) 

app.get('/', function (req, res) { 
    res.sendFile(path.resolve('client/index.html')); 
}); 

MongoClient.connect('mongodb://localhost/testdb', function(err, dbConnection) { 
    if(err) console.log(err); 

    db = dbConnection; 
    var server = app.listen(3000, function() { 
     var port = server.address().port; 
     console.log("Started server at port", port); 
    }); 
}); 

और रूटर के लिए के रूप में (लॉग इन पेज Login पर जा रहा है और रजिस्टर पेज से किया जा रहा Register में प्रस्तुत करना): redux में

//react-router 
render(
    <div> 
    <Provider store={store}> 
     <Router history={hashHistory}> 
     <Route 
      component ={MainPage} 
      path='/' 
     > 
      <IndexRoute component={Login}/> 
      <Route 
      component={Register} path="Register" 
      /> 
     </Route> 
     </Router> 
    </Provider> 
    </div>, 
    document.getElementById('app') 
) 

एपीआई पोस्ट अनुरोध:

//How registered user's credentials are stored via action in redux 
    registerUser(username, email, name, password) { 
    console.log('Started registering request') 
    var user = { 
     username: username, 
     email: email, 
     name: name, 
     password: password, 
    } 

    var request = { 
     method: 'POST', 
     headers: { 
     'Content-Type': 'application/json' 
     }, 
     body: JSON.stringify(user) 
    } 

    console.log('Adding user: ', user) 

    fetch(`http://localhost:3000/api/users`, request) 
    .then(res => res.json()) 
    .then(user => { 
     console.log(user); 
     return user; 
    }) 
    .catch(err => { 
     console.log('Error is', err) 
    }) 

    console.log('Ending registering request') 
    }, 
+0

उपयोग [क्लाइंट सत्र] (https://github.com/mozilla/node-client-sessions)। समझने में आसान हो सकता है। इसके अलावा यह मोज़ द्वारा बनाया गया है। – magreenberg

+0

@ मैग्रीनबर्ग मैं इन सभी मध्यवर्ती लोगों से अवगत हूं लेकिन मुझे समझ में नहीं आ रहा है कि उनमें से कोई भी मेरे पास मौजूद ढेर के साथ एकीकृत किया जा सकता है, विशेष रूप से प्रतिक्रिया-राउटर। एक उदाहरण मिडलवेयर के सिर्फ एक लिंक से वास्तव में उपयोगी होगा। –

उत्तर

0

यदि मैं अच्छी तरह से समझता हूं कि आपको की जरूरत है आपके उपयोगकर्ता ने लॉग इन किया है। मैं आपके उपयोगकर्ता को jwt लॉगिन करने के बाद टोकन बनाने के लिए jwt का उपयोग करने का सुझाव दूंगा और इस टोकन को localstorage.setItem (टोकन) में संग्रहीत करूँगा।

आशा है कि यह मदद

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