Der Versuch, Authentifizierung mit React zu tun. In meiner Login.js-Datei habe ich meine handleClick-Funktion, die json (verwendet mit Sitzungsspeicher) und eine Übermittlungsschaltfläche mit einem Link-Container abruft. Jetzt in meiner index.js Datei habe ich eine requireAuth Funktion mit replace. Mein Problem ist, dass die Funktion requireAuth vor meinem handleClick ausgelöst wird. Wie kann ich es nach meinem handleClick auslösen lassen, damit handleClick überprüft, ob der Benutzername und das Passwort erfolgreich sind, bevor der Benutzer angemeldet wird? Im Moment wird es mich nur nicht auf die nächste Seite bringen. Codebeispiele werden geschätzt. Ich benutze React Router v3.React - Auth funktioniert nicht wegen der Reihenfolge der Brennfunktionen
Login.js:
handleClick() {
fetch('/backend/login', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
username: this.state.username,
password: this.state.password
})
})
.then(response =>{
if (response.ok) {
response.json().then(data => {
sessionStorage.setItem('loggedIn', data.success);
console.log('login success: ' + sessionStorage.getItem('loggedIn'));
});
}
else {
console.log('failed');
}
})
}
render() {
<LinkContainer to='/Dashboard'>
<Button onClick={this.handleClick} type="submit"> Submit />
</Button>
</LinkContainer>
}
index.js:
function requireAuth(nextState, replace) {
if (!(sessionStorage.getItem('loggedIn') === true)) {
console.log(sessionStorage.getItem('loggedIn'));
replace({
pathname: '/',
state: { nextPathname: nextState.location.pathname }
});
}
}
ReactDOM.render(
<Router history={browserHistory}>
<Route path="/" component={Container}>
<IndexRoute component={Homepage}/>
<Route path="dashboard" component={Dashboard} onEnter=
{requireAuth}/>
</Route>
</Router>