46 votes

Assistant intégré .NET pour analyser le domaine \ nom d'utilisateur dans User.Identity.Name

Existe-t-il un utilitaire ou un assistant intégré pour analyser HttpContext.Current.User.Identity.Name , par exemple domain\user pour obtenir séparément le nom de domaine s'il existe et l'utilisateur?

Ou y a-t-il une autre classe pour le faire?

Je comprends qu'il est très facile d'appeler String.Split ("\") mais tout simplement intéressant

69voto

Aen Sidhe Points 480

C'est mieux ( plus facile à utiliser, aucune opportunité de NullReferenceExcpetion et conforme aux directives de codage de MS sur le traitement égal des chaînes vides et nulles ):

 public static class Extensions
{
    public static string GetDomain(this IIdentity identity)
    {
        string s = identity.Name;
        int stop = s.IndexOf("\\");
        return (stop > -1) ?  s.Substring(0, stop) : string.Empty;
    }

    public static string GetLogin(this IIdentity identity)
    {
        string s = identity.Name;
        int stop = s.IndexOf("\\");
        return (stop > -1) ? s.Substring(stop + 1, s.Length - stop - 1) : string.Empty;
    }
}
 

Usage:

 IIdentity id = HttpContext.Current.User.Identity;
id.GetLogin();
id.GetDomain();
 

Cela nécessite un compilateur C # 3.0 (ou plus récent) et ne nécessite pas 3.0 .Net pour fonctionner après la compilation.

13voto

StarCub Points 1208

System.Environment.UserDomainName vous donne le nom de domaine uniquement

De même, System.Environment.UserName vous donne que le nom d'utilisateur

7voto

Gruff Bunny Points 4314
var components = User.Identity.Name.Split('\\');

var userName = components.Last() 

var domainName = components.Reverse().Skip(1).FirstOrDefault()

4voto

inspite Points 8872

Je pense que non aussi, parce que je me suis posé la même question l'autre jour: D

Tu peux essayer

 public static string GetDomain(string s)
{
    int stop = s.IndexOf("\\");
    return (stop > -1) ?  s.Substring(0, stop + 1) : null;
}

public static string GetLogin(string s)
{
    int stop = s.IndexOf("\\");
    return (stop > -1) ? s.Substring(stop + 1, s.Length - stop - 1) : null;
}
 

4voto

Omar Points 584

Les gars, vous pouvez également envisager l'analyse d'une chaîne de caractères d'entrée comme "user@company.com" ou "utilisateur@domaine".

C'est ce que je suis en train de faire:
Si la chaîne contient des '\', puis diviser chaîne '\' et extraire le nom d'utilisateur et de domaine
Sinon Si la chaîne contient des '@', puis scinde une chaîne à '@' et extraire le nom d'utilisateur et de domaine
D'autre traite la chaîne comme nom d'utilisateur de domaine

Je suis toujours à la chasse pour une meilleure solution dans le cas où la chaîne d'entrée n'est pas dans un facile à prévoir format, c'est à dire "domaine\utilisateur@domaine". Je pense RegEx...

Mise à jour: je corrige la position des mains. Ma réponse est un peu hors contexte, il se réfère au cas de l'analyse des nom d'utilisateur et domaines de la saisie de l'utilisateur, comme dans la connexion de l'utilisateur/invite d'ouverture de session. Espérons que ça aide toujours quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X