Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[Silverlight 5] Récupérer le nom de l'utilisateur courant

Lorsque l’on désire récupérer le nom de l’utilisateur courant, dans une application Silverlight, nous avons à notre moyen 2 possibilités.

La première consiste à créer un service WCF qui va contenir une simple méthode renvoyant le nom de l’utilisateur courant:

   1: public string GetLoginName()
   2: {
   3:     string loginName =  System.Web.HttpContext.Current.User.Identity.Name.ToString();
   4:  
   5:     return loginName;
   6: }
   7:  

Une aute possibilité consiste à passer le nom de 'l’utilisateur dans les InitParams de l’application Silverlight:

   1: <param name="initParams" value="username=<%=HttpContext.Current.User.Identity.Name%>"

Avec Silverlight 5, une autre possibilité intervient: l’utilisation du P/Invoke ! Smile

Cette technique consiste à permettre à votre application d’effectuer des appels vers des DLL natives (de l’OS par exemple). Il s’agit là d’une grande nouveauté, surtout lorsque l’on sait que les application Silverlight s’exécutent dans une Sandbox (donc une boite depuis laquelle elles n’ont, en principe, accès à peu de choses).

Pour utiliser le P/Invoke, il est nécessaire de lancer votre application en “Out-Of-Browser” et de lui donner des privilèges élévés, mode dans lequel elle a justement la possibilité d’avoir accès à plus de fonctionnalités.

Une fois la configuration faîte, il ne reste plus qu’à écrire le code qui nous intéresse, en utilisant l’API GetUserName/GetUserNameEx (si l’on souhaite avoir plus d’options):

   1: public static class NativeMethods
   2: {
   3:     public enum EXTENDED_NAME_FORMAT
   4:     {
   5:         NameUnknown = 0,
   6:         NameFullyQualifiedDN = 1,
   7:         NameSamCompatible = 2,
   8:         NameDisplay = 3,
   9:         NameUniqueId = 6,
  10:         NameCanonical = 7,
  11:         NameUserPrincipal = 8,
  12:         NameCanonicalEx = 9,
  13:         NameServicePrincipal = 10,
  14:         NameDnsDomain = 12
  15:     }
  16:  
  17:     [DllImport("secur32.dll", CharSet = CharSet.Auto)]
  18:     public static extern int GetUserNameEx(int nameFormat, StringBuilder userName, ref int userNameSize);
  19: }
  20:  
  21: private void Button_Click(object sender, RoutedEventArgs e)
  22: {
  23:     StringBuilder userName = new StringBuilder(1024);
  24:     int userNameSize = userName.Capacity;
  25:  
  26:     if (NativeMethods.GetUserNameEx((int)NativeMethods.EXTENDED_NAME_FORMAT.NameSamCompatible, userName, 
ref userNameSize) != 0)
  27:     {
  28:         MessageBox.Show(userName.ToString()); 
  29:     }
  30: }

Et le tour est joué Smile

Pour information, sachez que l’utilisation du P/Invoke est identique à celle que l’on retrouve sur Windows (hormis certaines instructions qui ne sont pas (encore ?) supportées). Du coup, si vous souhaitez en mettre en place dans votre application, regarder la documentation associée pour le Compact Framework (s’agissant lui aussi d’un sous-ensemble du Framework .NET, les limitations pour Silverlight sont les mêmes !).

 

Have fun !

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 12 septembre 2011 11:09 par Thomas LEBRUN
Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Azure Days le 24 avril ! par Blog de Jérémy Jeanson le 04-08-2018, 17:51

- Office 365: Ajouter ou retirer des comptes utilisateurs des administrateurs de collections de site via PowerShell par Blog Technique de Romelard Fabrice le 02-19-2018, 18:18

- Office 365: Extraire dans un fichier CSV une liste de tous les Teamsites présents dans votre tenant Office 365 par Blog Technique de Romelard Fabrice le 02-19-2018, 15:39

- SharePoint 2007: Forcer le Check-In des fichiers avant la migration vers SharePoint Online par Blog Technique de Romelard Fabrice le 02-19-2018, 15:13

- Office 365: Comment configurer l’ouverture des fichiers stockés dans une Document Library par Blog Technique de Romelard Fabrice le 02-19-2018, 14:25

- Microsoft Flow - Boite Mail partagée - Bibliothèque SharePoint par Le Blog (Vert) d'Arnaud JUND le 01-12-2018, 09:05

- Office 365: Nettoyage des versions de List Item avant migration depuis SharePoint On Premise vers SharePoint Online par Blog Technique de Romelard Fabrice le 08-08-2017, 15:36

- Office 365: Comment supprimer des éléments de liste SharePoint Online via PowerShell par Blog Technique de Romelard Fabrice le 07-26-2017, 17:09

- Nouveau blog http://bugshunter.net par Blog de Jérémy Jeanson le 07-01-2017, 16:56

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22