Oggi è possibile usufruire di una potente funzione per filtrare l’accesso ai dati, essenziale per impedire l’accesso di malintenzionati alla vostra applicazione.
Questa funzione utilizza privilegi che consentono determinate azioni sui dati. Questi privilegi vengono assegnati agli utenti attraverso i ruoli e memorizzati nella sessione durante l’autenticazione.
In 4D 20R6, abbiamo migliorato questa funzionalità consentendo di ispezionare i privilegi nella sessione, il che è molto utile per il debug.
Continuate a leggere per saperne di più.
una nuova funzione getPrivilegi() sull’oggetto Sessione
Vediamo un esempio.
Nel file roles.json, abbiamo il privilegio medium che contiene il privilegio simple. Il ruolo Medium contiene il privilegio medium.
{
"privileges": [
{
"privilege": "simple",
"includes": []
},
{
"privilege": "medium",
"includes": [
"simple"
]
}
],
"roles": [
{
"role": "Medium",
"privileges": [
"medium"
]
}
],
"permissions": {
"allowed": [] // Set up the allowed actions here
}
}
Nella classe Datastore, c’è una funzione authentify() che assegna tutti i privilegi del ruolo dato al ruolo Session.
exposed Function authentify($role : Text) : Text
Session.clearPrivileges()
Session.setPrivileges({roles: $role})
return "Authentication done with "+$role
Nella classe Datastore è stata implementata anche una funzione getPrivileges(). Essa restituisce i privilegi della classe Session.
exposed Function getPrivileges() : Collection
return Session.getPrivileges()
Se la funzione authentify() viene chiamata con il ruolo Medio, la funzione getPrivileges() restituisce:
[
"simple",
"medium"
]
Nuova API RESt /$info/privilegi
Esiste anche una nuova API REST per ottenere i privilegi nella sessione. Anche la chiamata a /$info/privilegi nell’esempio precedente restituisce:
{
"privileges": [
{
"privilege": "simple"
},
{
"privilege": "medium"
}
]
}
Questo facilita il debug. Per saperne di più, consultare la documentazione.