2016-06-29 10 views
4

Ich füge Authentifizierung meiner App hinzu, die react-router verwendet. Ich habe das Client-Routing nach dem auth-flow Beispiel in react-router gemustert, aber mit Passport anstelle des lokalen Speichers, den das Beispiel verwendet. Das alles funktioniert gut.Wie kann ich in Express-Router von Express umleiten?

Der nächste Schritt ist das Schützen von Routen, die ich für Express in server.js definiere. Ich könnte eine Weiterleitung an /#/login senden, aber das fühlt sich spröde an. Was ist der beste Weg, um eine URL auf der Serverseite zu einer Login-Route abzuleiten, die von react-router bedient wird?

Hier ist, was ich habe jetzt in meinem server.js, die funktioniert, aber fühlt sich spröde:

app.get('/protected', 
    // redirecting to #/login seems bad: what if we change hashhistory, etc. 
    passport.authenticate('local', { failureRedirect: '/#/login'}), 
    function(req, res) { 
    res.render('whatever'); 
    }); 
+0

mehr Code-Beispiele von dem, was Sie pls versucht. – aarosil

+0

Zeit für eine Rückmeldung? –

Antwort

1

Config Route auf Express alle Routen zu bekommen und Routing mit reagieren-Router, auf diese Weise, ejem. (Ich hoffe, das Ihnen helfen kann)

server.js

import express from 'express' 
import path from 'path' 

const app = express(); 

app.use(express.static(__dirname + '/public')); 
app.get('*', (req,res) => res.sendFile(path.join(__dirname+'/public/index.html'))).listen(3000,() => console.log('Server on port 3000')) 

routes.jsx

import React from 'react' 
import ReactDOM from 'react-dom' 
import { Router, Route, Link, browserHistory, IndexRedirect } from 'react-router' 

import App from '../views/app.jsx' 

const Routes = React.createClass({ 
    render(){ 
     return(
      <Router history={ browserHistory }> 
       <Route path="/" component={App}> 
        <IndexRedirect to="/dashboard"/> 
        <Route path="dashboard" name="Dashboard" component={App} /> 
        <Route path="pages" name="Pages" component={Pages} /> 
        <Route path="/:Id" component={Page}/> 
        <Route path="/:Id/inbox" name=':ids' component={Inbox}/> 
       </Route> 
       <Route path="*" component={App}> 
        <IndexRedirect to="/dashboard" /> 
       </Route> 
      </Router> 
     ); 
    } 
}); 
ReactDOM.render(<Routes />, document.getElementById('app')) 
Verwandte Themen