Sie eine Möglichkeit haben, müssen Sie Ihre Auth an das Frontend an die Oberfläche. Nehmen wir an, Sie haben eine API mit dem Namen user/validate
, deren Zweck es ist, ein authentifiziertes Flag und alles, was Sie sonst noch wollen, wie den Server-Authentifizierungs-Token oder so etwas zurückzugeben. Sie benötigen eine Methode, um diese Informationen anzufordern. Ich nehme an, Sie haben eine Möglichkeit, Anfragen an API-Methoden bereits eingerichtet zu machen.
machen Sie eine Funktion, um diese Authentifizierung anzufordern.
export const checkAuth =() => {
const url = `${api_route}/user/validate`;
// this is just pseudo code to give you an idea of how to do it
someRequestMethod(url, (resp) => {
if (resp.status === 200 && resp.data.isAuthenticated === true) {
setCookie(STORAGE_KEY, resp.data.token);
}
});
}
Ihre Basis App Komponente würde in etwa so aussehen
export default class App extends Component {
constructor() {
super();
checkAuth();
}
....
}
jetzt Ihre Komponente so etwas tun könnte.
class MyComponent extends Component {
constructor(){
super()
this.isAuthenticated = getCookie(STORAGE_KEY);
}
render() {
return(
<div>
Hello {this.isAuthenticated ? 'friend' : 'stranger'} !
</div>
);
}
}
Ihre getCookie und setCookie Methoden so etwas wie dieses
export const setCookie = (name, value, days, path = '/') => {
let expires = '';
if (days) {
let date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = `; expires=${date.toUTCString()};`;
}
document.cookie = `${name}=${value}${expires}; path=${path}`;
};
export const getCookie = (cookieName) => {
if (document.cookie.length > 0) {
let cookieStart = document.cookie.indexOf(cookieName + '=');
if (cookieStart !== -1) {
cookieStart = cookieStart + cookieName.length + 1;
let cookieEnd = document.cookie.indexOf(';', cookieStart);
if (cookieEnd === -1) {
cookieEnd = document.cookie.length;
}
return window.unescape(document.cookie.substring(cookieStart, cookieEnd));
}
}
return '';
};
Jetzt wäre ... Ich würde empfehlen Ihnen dringend, bei Zugabe von etwas aussehen wie Redux um über Requisiten Übergabe von Daten zu handhaben. Auf diese Weise können Sie eine Speichermethode verwenden, die den getCookie ausführt und sofort aufruft, und alles andere wird als Flag in den Requisiten isAuthenticated haben.
Es ist nicht zu reagieren. Reagieren ist eine UI-Bibliothek. Sie können ein Cookie serverseitig nach der Authentifizierung festlegen, wenn Sie beispielsweise die html-Datei bereitstellen. –
Ja, das mache ich schon. Wenn der Benutzer authentifiziert wird, erstelle ich ein Cookie, aber in meiner React-Komponente muss ich prüfen, ob der Benutzer authentifiziert ist oder nicht. Ich kann auch Benutzerauthentifizierungsinformationen in meinen Redux-Speicher legen, bin mir aber nicht sicher, wie ich lesen soll, wenn der Benutzer authentifiziert ist oder nicht. – Sam
Dann übergeben Sie diese Informationen als Prop zu Ihrer Komponente. Wenn Sie diese Information im redux Geschäft einstellen können, sollte es nicht anders als andere Sachen in Ihrem redux Speicher sein. Oder verstehe ich dich nicht richtig? –