Bir MongoDB + NodeJS Express sunucusuna sahibim, Webpack çalıştıran ve veritabanına kimlik bilgilerini içeren bir kullanıcı kaydı yapabiliyor. Kullanıcı oturum açtığında kimlik doğrulama ve oturum eklemek istiyorum. Passport.js
'a bakıyorum ama hepsi nasıl bir araya getirilebileceğini anlayamıyorum.MongoDB + NodeJS Express ile giriş kimlik doğrulaması ve ReactJS React Router ve Redux oturumu nasıl eklenir?
En iyi yaklaşım hangisi olurdu? Herhangi bir örnek ve rehberlik çok takdir edilecektir.
Şimdiye kadar bunlar benim kurulumum. sunucusu için
: redux içinde//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')
)
API POST isteği:
yönlendirici içinvar 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);
});
});
Ve (Giriş sayfasını Login
olmak ve kayıt sayfası varlık Register
oluşturulmasına)
//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')
},
kullanımına yardımcı Umut [istemci oturumu] (https://github.com/mozilla/node-client-sessions). Anlamak daha kolay olabilir. Artı onun moz tarafından yapılmış. – magreenberg
@magreenberg Tüm bu orta sınıfların farkındayım ama özellikle de yönelticiye sahip olduğum yığınla nasıl bütünleştirilebileceğini anlayamıyorum. Bir örnek, başka bir ara katman yazılımına bir bağlantıdan çok yararlı olacaktır. –