Fin dalla prima versione di Windows 10 è disponibile una API, all'interno del namespace Windows.System, che permette di lavorare con gli utenti: in questo modo è più semplice realizzare applicazioni i cui dati da mostrare devono essere diversi in base all'utente loggato.
Gli utenti si possono recuperare direttamente dal sistema operativo, è sufficiente aggiungere una capability chiamata "User Account Information" e un paio di righe di codice:
IReadOnlyList<User> users = await User.FindAllAsync(UserType.LocalUser, UserAuthenticationStatus.LocallyAuthenticated); var currentUser = users.FirstOrDefault(); var firstName = (string)await currentUser.GetPropertyAsync(KnownUserProperties.FirstName); var lastName = (string)await currentUser.GetPropertyAsync(KnownUserProperties.LastName);
E' anche possibile recuperare l'eventuale immagine associata all'account, per poi mostrarla in un controllo Image nell'interfaccia grafica:
// recupero l'immagine specificando una dimensione var picture = await currentUser.GetPictureAsync(UserPictureSize.Size424x424); // creo una bitmapimage e gli assegno lo stream var bi = new BitmapImage(); await bi.SetSourceAsync(await picture.OpenReadAsync()); // assegno la bitmapimage all'immagine sulla UI UserImage.Source = bi;
La cosa interessante è che, nel codice appena mostrato, gli utenti vengono recuperati da una lista dei Microsoft Account registrati e si considera il primo come l'utente che ha avviato l'applicazione: potrebbe non essere sempre vero, pertanto è consigliato leggere l'utente direttamente allo startup, nel metodo OnLaunched:
protected override async void OnLaunched(LaunchActivatedEventArgs e) { var currentUser = e.User; ... }
Nel caso l'applicazione venga però sospesa, non è possibile risalire all'utente poiché passa da un metodo differente che non ha la proprietà User, ma è sufficiente salvare nello storage locale (o dovunque si preferisca) l'identificativo dell'utente, chiamato NonRoamableId, così che possa essere sempre recuperato a runtime tramite:
var localSettings = ApplicationData.Current.LocalSettings; var oldUserId = localSettings.Values["userId"]; var currentUser = User.GetFromId(oldUserId);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione degli stili CSS con le regole @layer
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Aggiungere interattività lato server in Blazor 8
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Generare la software bill of material (SBOM) in GitHub
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Usare le collection expression per inizializzare una lista di oggetti in C#
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Sfruttare MQTT in cloud e in edge con Azure Event Grid
C# 12: Cosa c'è di nuovo e interessante
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
I più letti di oggi
- Gestire la localizzazione con ASP.NET Core
- Effettuare una query XPath con LINQ to XML
- Vi aspettiamo oggi dalle 14 con @ugidotnet per dare il via a #aiconfitDue track, agenda e live su https://aiconf.it/ #ai #ml
- Eseguire i worklow di GitHub su runner potenziati
- Dev Night #3: Connect(); 2018 - Milano
- Rilasciata la service release GDR1 di Silverlight 4.0
- Vuoi vincere 1.500,00 Euro? Rispondi subito!
- Generare documenti Word