2016-08-31 27 views
6

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çin
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); 
    }); 
}); 

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') 
    }, 
+0

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

+0

@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. –

cevap

0

Eğer iyi anlarsam, o zaman konuşman gerekir. Kullanıcınız oturum açmış. Kullanıcıya jwt giriş yaptıktan sonra bir jeton oluşturmak için jwt kullanmasını öneririm ve bu jetonu localstorage.setItem (jeton) içine depolar.

bu

İlgili konular