Integrazione dell’autenticazione utente nelle applicazioni Qodly

Tradotto automaticamente da Deepl

Nel blog di questa settimana ci concentreremo sul tema cruciale dell’autenticazione. Per illustrare la nostra discussione, utilizzeremo l’esempio di un’applicazione progettata per la stesura delle valutazioni annuali delle prestazioni dei dipendenti. Questa applicazione consente agli utenti di accedere in modo sicuro ai propri account autenticandosi con la propria e-mail e password.

Applicazione per la valutazione delle prestazioni

Panoramica sull’autenticazione

L’autenticazione è un elemento fondamentale di qualsiasi applicazione web, in quanto garantisce che solo gli utenti autorizzati possano accedere a informazioni sensibili o eseguire azioni specifiche. Nel nostro esempio, il processo di login è semplice ma efficace, a dimostrazione di come 4D Qodly Pro gestisca l’autenticazione in modo sicuro ed efficiente.

Il processo di login

Il modulo di login si trova nella pagina “login” e consiste in:

  • Due campi di input: collegati all’e-mail e alla password della fonte dei dati.
  • Un pulsante “Accedi”: attiva il processo di autenticazione.

This is a login page for a "Performance Review" system. The design is split into two sections:
* Left Side (Red Background)
        Displays the Performance Review title with an icon of a building and a person.

* Right Side (White Background)
        Contains a "Welcome!" message.
        Two input fields for Email and Password, with the password field having an eye icon to toggle visibility.
        A "Forgot your password?" link.
        A red "Sign in" button for user authentication.

In Qodly Studio, nella sezione dedicata ai modelli, sono disponibili altri modelli di modulo precostituiti per la funzionalità di login. Questi modelli possono essere personalizzati per soddisfare i requisiti specifici della vostra applicazione.

Funzione: authentify()

Quando l’utente fa clic sul pulsante “Accedi”, viene richiamata la funzione “ds.authentify()” con l’e-mail e la password come parametri.

The OnClick function in this UI is set up to authenticate a user when they click a button. Here’s how it works:
1. Event Trigger
* The function is executed onClick of the button.
2. Function Call
* Calls an exposed function named ds.authentify, which likely handles authentication.
3. Parameters Passed
* email (Text) → Taken from the page input.
* password (Text) → Also taken from the page input.
* pageName (set to "app") → Likely specifies which page or context the authentication is for.
4. Result Handling
* The function returns a result (Text), which could be used to verify if authentication was successful.

Le informazioni dell’utente, come l’e-mail e la password, sono memorizzate nel database all’interno della tabella “Employee”. Nella funzione “authentify()”, viene eseguita una semplice interrogazione del database per verificare le informazioni.

Ecco un codice che illustra questo processo:

exposed Function authentify($email: Text; $password: Text) : Text
$employee :=This.Employee.query("Email = :1"; $email).first()
If ($employee#Null)
If (Verify password hash($password; $employee.Password))
Session.setPrivileges("utente")
Web Form .setMessage("Autenticazione riuscita")
Else
Web Form .setError("Autenticazione fallita")
End if
Else
Web Form .setError("Autenticazione fallita")
End if

Gestione dei privilegi dell’utente

Prima di autenticare un utente, è fondamentale limitare l’accesso ai dati e alle funzioni sensibili. Questa sicurezza è garantita dalla gestione dei privilegi.

Innanzitutto, abbiamo un privilegio denominato “nessuno”, che possiede tutti i diritti sull’origine dati (ds), garantendo un accesso completo al database. In particolare, questo privilegio non viene assegnato a nessun utente, mantenendo così un ambiente sicuro. Quando i diritti vengono concessi a un privilegio, vengono automaticamente revocati a tutti gli altri, rendendo il sistema efficacemente sicuro.

This screenshot shows a privilege management interface where a set of permissions are assigned to a data source (ds).
Read: Allowed
Create: Allowed
Update: Allowed
Delete: Allowed
Execute: Allowed

Poi, abbiamo aggiunto un privilegio chiamato “authentify”. Il permesso “promuovere” è assegnato alla funzione “ds.authentify()”. Ciò significa che ogni volta che questa funzione viene chiamata, il privilegio “authentify” viene applicato automaticamente.

Quindi, ci assicuriamo che i permessi richiesti per l’autenticazione siano aggiunti alla classe di dati o alle funzioni in uso. Nel nostro esempio, assegniamo i permessi “Read” e “Execute” alla classe di dati “Employee”.

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

Infine, si attiva l’opzione“Forza il login“. Questa opzione consente di controllare il numero di sessioni web aperte che richiedono licenze 4D Client. È anche possibile disconnettere l’utente in qualsiasi momento per diminuire il numero di licenze conservate.

Questo sistema di privilegi a più livelli aiuta a prevenire gli accessi non autorizzati e garantisce un funzionamento sicuro dell’applicazione.

Per saperne di più, consultate il nostro blog post: L ‘accesso forzato diventa predefinito per tutte le autorizzazioni REST.

Aggiunta di una funzione di logout

Per migliorare l’esperienza dell’utente e la sicurezza, è importante fornire un’opzione di logout. Nel nostro esempio:

  • Un pulsante di logout è posizionato nell’angolo superiore destro della pagina “Principale”.
  • L’azione “logout” viene aggiunta a questo pulsante nell’evento “On Click”.

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

In questo modo gli utenti possono terminare la loro sessione in modo sicuro, cancellando tutti i privilegi attivi e proteggendo i dati sensibili.

Passi successivi

L’autenticazione e la gestione dei privilegi sono fondamentali per costruire applicazioni web sicure. Per approfondire le funzionalità di autenticazione e gestione dei privilegi, consultate le seguenti risorse:

Vi invitiamo a provare a implementare questi concetti nelle vostre applicazioni. Avete domande o approfondimenti? Partecipate alla discussione nel forum o condividete il vostro feedback nei commenti qui sotto. Restate sintonizzati per il prossimo articolo della nostra serie!

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.