मेरे पास एक मोंगोडीबी + नोडजेएस एक्सप्रेस सर्वर है, वेबपैक चल रहा है और उपयोगकर्ता को डेटाबेस में प्रमाण-पत्र के साथ पंजीकृत करने में सक्षम है। अब जब उपयोगकर्ता लॉग इन करता है तो मैं प्रमाणीकरण और सत्र जोड़ना चाहता हूं। मैं 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')
},
उपयोग [क्लाइंट सत्र] (https://github.com/mozilla/node-client-sessions)। समझने में आसान हो सकता है। इसके अलावा यह मोज़ द्वारा बनाया गया है। – magreenberg
@ मैग्रीनबर्ग मैं इन सभी मध्यवर्ती लोगों से अवगत हूं लेकिन मुझे समझ में नहीं आ रहा है कि उनमें से कोई भी मेरे पास मौजूद ढेर के साथ एकीकृत किया जा सकता है, विशेष रूप से प्रतिक्रिया-राउटर। एक उदाहरण मिडलवेयर के सिर्फ एक लिंक से वास्तव में उपयोगी होगा। –