Heim > Web-Frontend > js-Tutorial > Hauptteil

Umgang mit dynamischen Rollennamen in verschiedenen Umgebungen mit dem useRoleManagement Hook (Teil 2)

WBOY
Freigeben: 2024-09-03 15:00:56
Original
1077 Leute haben es durchsucht

Handling Dynamic Role Names in Different Environments with useRoleManagement Hook (Part 2)

Im ersten Teil dieser Serie haben wir die Grundlagen der Implementierung einer rollenbasierten Zugriffskontrolle in React mithilfe des useRoleManagement-Hooks untersucht. Wenn Sie es noch nicht gelesen haben, können Sie es hier nachlesen
Implementierung der rollenbasierten Zugriffskontrolle in React: Ein tiefer Einblick in den useRoleManagement Hook.

In diesem zweiten Teil werden wir tiefer in die Verwaltung dynamischer Rollennamen in Abhängigkeit von verschiedenen Umgebungen wie Staging und Produktion eintauchen. Dies ist entscheidend für die Aufrechterhaltung eines konsistenten und sicheren Rollenmanagements über verschiedene Entwicklungsstadien hinweg.

Übersicht

Bei der Entwicklung von Anwendungen kommt es häufig vor, dass für verschiedene Umgebungen unterschiedliche Rollennamen oder Berechtigungskonfigurationen gelten. Beispielsweise können Sie in der Entwicklung Test- oder Scheinrollennamen und in der Produktionsumgebung echte, produktionsbereite Rollennamen verwenden. Durch die korrekte Handhabung dieser dynamischen Rollennamen wird sichergestellt, dass sich Ihre Anwendung in den verschiedenen Phasen ihres Lebenszyklus konsistent und sicher verhält.

Umgebungsspezifische Rollenkonfiguration

Um Rollennamen dynamisch zu verwalten, können wir Umgebungsvariablen nutzen. Mithilfe dieser Variablen können wir unterschiedliche Rollenschlüssel für verschiedene Umgebungen definieren, die dann zum Laden der entsprechenden Berechtigungskonfiguration verwendet werden können.

So können wir das erreichen:

1. Umgebungsvariablen definieren

Geben Sie in Ihren Dateien .env.development und .env.produktion die Rollenschlüssel für jede Umgebung an. Zum Beispiel:

  • .env.development
VITE_ROLE_KEYS_MANAGER=Manager_Test
VITE_ROLE_KEYS_USER=USER_Test
VITE_ROLE_KEYS_ADMIN=Admin_Test
Nach dem Login kopieren
  • .env.produktion
VITE_ROLE_KEYS_MANAGER=Prod_Manager
VITE_ROLE_KEYS_USER=Prod_USER
VITE_ROLE_KEYS_ADMIN=Prod_Admin

Nach dem Login kopieren

Dieses Setup stellt sicher, dass Ihre Anwendung je nach Umgebung, in der sie ausgeführt wird, entsprechende Rollennamen verwendet.

2. Aktualisieren Sie das Berechtigungsobjekt

Verwenden Sie diese Umgebungsvariablen, um das Berechtigungsobjekt dynamisch zu definieren. Das Berechtigungsobjekt ordnet Rollenschlüssel spezifischen Berechtigungen für jede Rolle zu:

const permissions: Record<string, UserPermissions> = {
  [import.meta.env.VITE_ROLE_KEYS_MANAGER]: {
    partners: { add: false, view: false, edit: false, deleteRow: true },
    // ... other permissions
  },
  [import.meta.env.VITE_ROLE_KEYS_USER]: {
    partners: { add: false, view: false, edit: false, deleteRow: false },
    // ... other permissions
  },

  [import.meta.env.VITE_ROLE_KEYS_ADMIN]: {
    partners: { add: true, view: true, edit: true, deleteRow: true },
    // ... other permissions
  },
};
Nach dem Login kopieren

Die import.meta.env-Syntax ermöglicht Ihnen den Zugriff auf Umgebungsvariablen, die in Ihren .env-Dateien definiert sind.

3. Verwenden Sie den useRoleManagement Hook

Im ersten Teil dieser Serie haben wir die Grundlagen der rollenbasierten Zugriffskontrolle in React mithilfe des useRoleManagement-Hooks untersucht. Wenn Sie es noch nicht gelesen haben, können Sie es hier nachlesen.

Der useRoleManagement-Hook extrahiert Benutzerrollen aus dem dekodierten JWT-Token, ordnet sie mithilfe der umgebungsspezifischen Rollenschlüssel Berechtigungen zu und gibt dann die relevanten Berechtigungen zurück:

export function useRoleManagement() {
  const { pathname } = useLocation();

  const token = localStorage.getItem('token');

  let decodedToken: Realm | null = null;

  try {
    if (token) {
      decodedToken = jwtDecode<Realm>(token);
    }
  } catch (error) {
    console.error('Invalid token:', error);
  }

  const roles = decodedToken?.realm_access?.roles ?? [];

  const roleExists = ifRoleExists(roles);

  const rolePermissions = getPermissions(
    roleExists,
    pathname !== '/' ? pathname : '/partners',
  );

  if (!rolePermissions) {
    return {};
  }

  const {
    add,
    view,
    edit,
    deleteRow,
    confirm,
    include,
  } = rolePermissions as Permissions;

  return {
    add,
    view,
    edit,
    deleteRow,
    confirm,
    include,
  };
}
Nach dem Login kopieren

Fazit

Durch die dynamische Verwaltung von Rollennamen über Umgebungsvariablen können Sie sicherstellen, dass sich die rollenbasierte Zugriffskontrolle Ihrer Anwendung in verschiedenen Umgebungen konsistent verhält. Dieser Ansatz bietet Flexibilität und trägt dazu bei, eine klare Trennung zwischen Entwicklungs- und Produktionskonfigurationen aufrechtzuerhalten.

Das obige ist der detaillierte Inhalt vonUmgang mit dynamischen Rollennamen in verschiedenen Umgebungen mit dem useRoleManagement Hook (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage