Nella maggior parte delle applicazioni, è necessario un controllo degli accessi, a seconda del ruolo dell'utente. In questa lezione vedremo un esempio di impostazione di tale controllo per un'applicazione web. Nell'ambito di questo compito, sarà necessario:

  • Definire il ruolo dell'utente
  • A seconda del ruolo, controllare la visualizzazione delle voci del menu di navigazione
  • Rendere impossibile la navigazione in pagine non accessibili a un ruolo specifico.

Preparazione iniziale

Iniziamo con la parte preparatoria. Per comodità di ulteriore configurazione, è necessario creare una variabile globale che memorizzi le informazioni sull'utente corrente. In questo modo, se si deve fare un controllo, non sarà necessario contattare ogni volta il backend e richiedere informazioni sull'utente. Sarà sufficiente leggere i dati necessari dalla variabile globale.


È necessario prendere in considerazione le varie opzioni con cui un utente autorizzato può accedere all'applicazione:

  • Accesso come risultato di un'autorizzazione riuscita nella pagina Login.
  • Accesso come risultato della registrazione.
  • Accesso diretto tramite un link a una pagina specifica per gli utenti già autorizzati.

In ognuno di questi casi, viene utilizzata una query di backend che restituisce informazioni sull'utente. Nel processo aziendale corrispondente, è sufficiente aggiungere un blocco Set Variable per registrare la variabile globale User_gv creata in precedenza.

Questo blocco viene aggiunto al processo CheckAuth processo aziendale per gli utenti autorizzati, che si trova nella cartella Prebuilt nella sezione dei processi aziendali.

Per entrare attraverso le pagine di login o di registrazione, il blocco viene aggiunto ai processi aziendali dei pulsanti corrispondenti.

Verifichiamo il risultato nella pagina iniziale dell'applicazione. A tale scopo, aggiungiamo un elemento Label che saluterà l'utente per nome e, a seconda del ruolo, scriverà se è un amministratore o meno.

È necessario impostare un processo aziendale che si attivi quando viene visualizzato un qualsiasi Label (Label onShow trigger).

  1. Expand User. Per informazioni sul nome e sui ruoli dell'utente.
  2. In Array. Per verificare se l'utente in questione fa parte del Admins gruppo.
  3. If-Else. Per la variabilità delle azioni in base ai risultati del controllo.
  4. Set Variable (String). Per creare una variabile String con un valore di "NOT " se l'utente non è membro del gruppo o un valore vuoto se lo è. Admins gruppo o un valore vuoto se lo è.
  5. Concat Strings (Multiple). Per creare una frase completa come "Hi, Ken. You are NOT Admin".
  6. Label Update Properties. Per la visualizzazione finale di questa frase nella pagina.

Se tutto è stato fatto correttamente, con qualsiasi variante di accesso alla pagina, la schermata avrà un risultato simile.

Controllo della visibilità delle voci di menu

Ora è il momento di passare alla parte principale. Creiamo una pagina destinata solo agli amministratori e aggiungiamo la voce di menu corrispondente (Admin Page) per accedervi. La soluzione migliore è quella di disabilitare la sua visibilità per impostazione predefinita.

Utilizzando il blocco Navigate è necessario selezionare la pagina creata nel parametro Page e scoprire l'ID di questa pagina.

In questo esempio, c'è solo una pagina con accesso limitato, ma è meglio prevedere subito l'opzione quando ci possono essere molte pagine di questo tipo e creare una variabile globale di sola lettura per memorizzare l'elenco delle pagine.

Successivamente, è necessario creare il processo aziendale stesso (chiamiamolo Set NavItem Visibility) per controllare la visibilità delle voci del menu di navigazione.

  1. Expand User. Per informazioni sui ruoli degli utenti.
  2. In Array. Per verificare se l'utente dato è nel Admins gruppo.
  3. For each loop. Per eseguire il ciclo per tutte le pagine specificate nella variabile globale.
  4. NavItem Update Properties. Per controllare la visibilità di un elemento, a seconda che l'utente sia o meno un amministratore.

Il blocco del processo aziendale creato deve essere aggiunto prima di passare alla pagina iniziale nei processi aziendali dei pulsanti di login e di registrazione dell'utente (in precedenza, Set Variable sono stati aggiunti ad essi per registrare una variabile con informazioni sull'utente corrente).

Controllo dell'accesso tramite collegamento diretto

L'ultima cosa da fare è impostare un processo aziendale che venga eseguito ogni volta che l'applicazione viene lanciata dal trigger "On app launch". Come nel passo precedente, aggiungere il blocco Set NavItems Visibility per gli utenti autenticati.

Inoltre, è necessario fornire una protezione contro l'accesso a una pagina chiusa tramite un collegamento diretto:

  1. In Array (Admin_pages). Per verificare se la pagina di destinazione è nell'elenco delle pagine per soli amministratori.
  2. If-Else. Per variare le azioni in base ai risultati del controllo. Se Falseè possibile navigare verso la pagina specificata. Nel caso di Trueè necessaria un'ulteriore verifica del diritto di accesso alla pagina.
  3. Expand User. Per leggere le informazioni sull'utente dalla variabile globale User_gv.
  4. In Array. Per verificare l'appartenenza al gruppo Admins.
  5. If-Else. Per selezionare le azioni in base alla presenza o meno dei diritti di amministratore.
  6. Navigate. Per andare alla pagina richiesta o per reindirizzare alla pagina iniziale nel caso in cui un utente senza diritti appropriati cerchi di aprire una pagina destinata solo agli amministratori.

Le pagine selezionate sono ora protette dall'accesso non autorizzato. In assenza di diritti, non vengono visualizzate nel menu e non è possibile accedervi nemmeno tramite un collegamento diretto.

È importante ricordare che la protezione dell'accesso a determinate pagine non implica la protezione automatica degli endpoint che possono essere utilizzati in quelle pagine. Per questo, se necessario, nelle Middleware Token Auth è necessario specificare i gruppi di utenti che hanno diritti di accesso all'endpoint selezionato.

Was this article helpful?

AppMaster.io 101 Corso intensivo

10 Moduli
2 settimane

Non sai da dove cominciare? Inizia con il nostro corso intensivo per principianti ed esplora AppMaster dalla A alla Z.

Inizia il corso
Development it’s so easy with AppMaster!

Serve ancora aiuto?

Risolvi qualsiasi problema con l'aiuto dei nostri esperti. Risparmia tempo e concentrati sulla creazione delle tue applicazioni.

headphones

Contatta il Supporto

Parlaci del tuo problema e ti troveremo una soluzione.

message

Chat comunitaria

Discuti le domande con altri utenti nella nostra chat.

Unisciti alla comunità