Sto utilizzando .net reclama il principal quando autentichi un utente. Nel nostro sistema un utente ha più permessi (può essere fino a 70).Aggiunta di più valori in 1 reclamo utente utilizzando la stringa JSON
Ora invece di interrogare il database su ogni richiesta, un utente ritiene che sarebbe opportuno archiviare le autorizzazioni come richiesta. Ho provato a memorizzare ogni autorizzazione come richiesta separata, ma persino ottenere 10 permessi fa aumentare enormemente la dimensione del token.
Così invece di aggiungere 1 richiesta per 1 permesso, mi chiedevo se avrebbe fatto un altro se avessi aggiunto tutte le autorizzazioni a 1 reclamo, e lo fa. Mantiene le dimensioni del token piccolo, ma ho i permessi di cui ho bisogno.
Ora per fare questo, ho dovuto convertire tutte le mie autorizzazioni da un array, in una stringa JSON e quindi salvarle come richiesta. Per ottenere il reclamo, posso quindi deserializzare la stringa in una matrice e non devo assolutamente interrogare il database.
Questo è ok per fare questo, o è una pessima pratica? Sto facendo una bomba a orologeria e sta per esplodere presto facendo questo?
codice di esempio qui
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
// get user permissions
var permissions = await _permissionService.GetAllAsync(user);
// create list of all permissions
List<object> claimPermissions = new List<object>();
foreach (var item in permissions)
{
claimPermissions.Add(new
{
Action = item.Action,
Type = item.Type
});
}
// convert list to json
var json = Newtonsoft.Json.JsonConvert.SerializeObject(claimPermissions);
// add claim
identity.AddClaim(new Claim("Permissions", json));
Qualcuno ha qualche opinione su questo? – Gillardo
Vorrei che qualcuno rispondesse alla domanda. Dimentica la parte Autorizzazioni e prendila come 70+ elementi. Sarebbe una cattiva pratica? – Mike