Ich versuche, eine Admin-Dashboard in react
und Meteor
nur angezeigt werden, wenn der aktuellen Benutzer ein Admin ist.Reagieren: Wie sicher eine Komponente zur Anzeige nach Benutzerrolle
Ich rufe eine Servermethode auf, die die Benutzerberechtigung überprüft und die Admin-Komponente nur dann rendert, wenn diese Methode true
zurückgibt.
Dieser Serveraufruf ist asynchron und daher wird die Komponente nicht gerendert, normalerweise verwalte ich diesen asynchronen Anruf mit Status, aber ich möchte hier nichts im Status anzeigen (möchte nicht, dass jemand den Status und den Zugriff ändert) das Admin-Dashboard). Hier
ist der Code:
export default class AdminChecker extends Component {
isItAdmin() {
// Get the id of current user
const userId = Meteor.userId();
if (userId) {
// call a server method which returns true if current user is Admin
Meteor.call('checkAdminId', userId, (err, authorized) => {
if (err) {
console.log(err);
return null;
}
return (authorized) ? <AdminDashboard /> : null;
});
}
}
render() {
return (
<div className="admin-temp-container">
{this.isItAdmin()}
</div>
);
}
}
Ich glaube, ich diese Logik in einer übergeordneten Komponente haben kann und das Ergebnis der isItAdmin
-adminDashboard
als Stütze senden (die adminDashboard
Komponente würde nur Informationen angezeigt, wenn seine Requisiten true
).
Aber ich bin sicher, wenn das sicher ist. Könnte man die Requisiten mit Chrome reagieren, Entwickler-Tools oder so ähnlich?
Vielen Dank
Ja, eine Stütze kann mit wenig Aufwand in der Konsole geändert werden. Ihre Vorgehensweise ist nicht besonders sicher, könnte aber für Ihre Bedürfnisse ausreichen. – px1mp
Es ist sehr schwierig, Clientkomponenten abhängig von einem booleschen Flag zu erstellen, das eine Administratorrolle angibt. Sie müssen definitiv für alles eine Methode Gegenstück, weil Sie annehmen müssen, dass jemand es macht, um die Verwaltungsrolle auf der Klientenseite zu fälschen – Jankapunkt
Ich weiß nicht, ob das Ihnen helfen wird, aber normalerweise in meinen Projekten verwende ich den redux Speicher Holen Sie sich die Rolle des Benutzers und ich schreibe eine Komponente höherer Ordnung, die den Status aus dem Redux-Speicher liest und die richtige Komponente darstellt, und natürlich müssen die redux-Devtools nur im Entwicklungsmodus aktiviert werden. –