Se si desidera utilizzare l'autenticazione attraverso tutta l'applicazione, è necessario memorizzare alcune a livello di applicazione dei dati (ad esempio token). È possibile configurare due mixin React responsabili della gestione dell'oggetto $auth
. Questo oggetto non dovrebbe essere disponibile al di fuori di questi due mix. Ecco esempio di che:
define('userManagement', function() {
'use strict';
var $auth = {
isLoggedIn: function() {
// return something, e.g. using server-stored data
}
};
return {
Authenticator: {
login: function(username, password) {
// modify $auth object, or call server, or both
}
},
NeedsAuthenticatedUser: {
statics: {
willTransitionTo: function (transition) {
if (!$auth.isLoggedIn()) {
transition.abort();
}
}
}
}
};
});
allora si può solo mixin Authenticator
miscelazione per i componenti d'accesso (schermata di login, login pop-up, ecc) e chiamare this.login
funzione quando si dispone di tutti i dati necessari.
La cosa più importante è proteggere i componenti mixando nel mix NeedsAuthenticatedUser
. Ogni componente che ha bisogno di utente autenticato dovrà guardare così:
var um = require('userManagement');
var ProtectedComponent = React.createClass({
mixins: [um.NeedsAuthenticatedUser]
// ...
}
Nota che NeedsAuthenticatedUser
utilizza API reagire-router (willTransitionTo
e transition.abort()
).
fonte
2015-06-28 11:11:36
Se non sono connessi, reindirizzare al gestore di accesso. Si noti inoltre che il client ha accesso a tutto il JS che carica, quindi non memorizzare informazioni sensibili in esso. –
@Tanner Semerad avete qualche repository github su come l'avete raggiunto brevemente. – jit
@jit Io no, mi dispiace. La risposta di miciek di seguito era ciò di cui avevo bisogno, ma tieni presente che questo era prima del react-router 1.0. So che un certo numero di cose sono cambiate da quando è stato rilasciato 1.0, ma è per lo più simile. –