Domanda

Sto discutendo il modo migliore per propagare autorizzazioni abbastanza complesse dal server a un'applicazione AJAX e non sono sicuro del miglior approccio da adottare.

In sostanza, desidero che i miei permessi siano definiti in modo da poter richiedere un intero set di permessi in un colpo solo e regolare l'interfaccia utente come appropriato (le modifiche all'interfaccia utente possono essere di livello basso quanto la disabilitazione di alcune voci del menu contestuale). Certo, devo ancora imporre il lato server delle autorizzazioni.

Quindi, mi chiedevo se qualcuno avesse qualche suggerimento per il modo migliore per

  1. conserva le autorizzazioni e le usa nel codice server
  2. hanno un facile accesso alle autorizzazioni in javascript
  3. non è necessario presentare una richiesta di andata e ritorno al server per ogni singola autorizzazione

Pensieri?

È stato utile?

Soluzione

Se disponi di un set chiaro di autorizzazioni, ad esempio un "livello utente" o " tipo di utente " ;, potresti semplicemente passare il valore in un campo nascosto e accedere al valore tramite il DOM. Potresti comunque farlo se le tue autorizzazioni fossero più granulari, ma avresti molti campi nascosti o dovresti codificare le informazioni in XML o JSON o in qualche altro formato.

È possibile impostarli come flag di bit in modo da poter OPPURE un singolo valore numerico con una maschera per vedere se l'utente dispone dell'autorizzazione per un'attività specifica. Sarebbe molto flessibile e fintanto che non hai più di 32 "diritti" specifici, ciò consentirebbe qualsiasi permutazione di tali diritti in un pacchetto molto piccolo (fondamentalmente un int senza segno).

Ad esempio:

0x00000001 //edit permission
0x00000002 //create new thing permission
0x00000004 //delete things permission
0x00000008 //view hidden things permission
   .
   .
   .
0x80000000 //total control of the server and everyone logged in

Quindi un utente con un'autorizzazione di 0x000007 potrebbe modificare, creare ed eliminare, ma nient'altro.

In entrambi i casi, penso che tu sia sulla strada giusta: fai la richiesta una volta per ogni chiamata, memorizza le autorizzazioni in una struttura di dati JavaScript globale e vai da lì. AJAX è carino, ma non vuoi interrogare il server per ogni specifica autorizzazione in tutta la tua pagina. Lo faresti una volta al caricamento della pagina, imposti la presentazione della tua pagina e salverai il valore in una variabile globale, quindi fare riferimento alle autorizzazioni locali per le funzioni degli eventi.

Altri suggerimenti

Se si trasmette la struttura delle autorizzazioni al client come oggetto JSON (o XML, se si preferisce), è possibile manipolare quell'oggetto con il codice lato client e rispedirlo al server, che può fare qualunque cosa deve convalidare i dati e conservarli.

Non lo vedo necessariamente come il più "corretto" soluzione, ma sarebbe possibile mantenere tutte le informazioni relative alle autorizzazioni sul lato server e servire semplicemente l'interfaccia utente aggiornata anziché un qualche tipo di sistema di autorizzazioni JSON?

Dovresti prendere la decisione in base a quanto la tua app è impegnata e intensa, ma sicuramente una decisione che vale la pena prendere in entrambi i casi

Codificali come JSON .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top