Встроенный помощник для парсинга Пользователя. Идентификационные данные. Имя в Domain\Username

46
задан abatishchev 18 December 2014 в 22:47
поделиться

4 ответа

Это лучше ( легче использовать, никакая возможность NullReferenceExcpetion, и приспосабливает инструкциям по кодированию MS об обработке пустой и пустой строки одинаково ):

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;
    }
}

Использование:

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

Это требует компилятора C# 3.0 (или более новый) и не требует 3.0.Net для работы после компиляции.

69
ответ дан SliverNinja - MSFT 26 November 2019 в 20:20
поделиться

Я думаю No также, потому что я спросил меня тот же вопрос на днях: D

можно попробовать:

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;
}
4
ответ дан Unihedron 26 November 2019 в 20:20
поделиться

Я не думаю так, потому что Система. Безопасность. Принципал. WindowsIdentity не содержит таких участников.

1
ответ дан Aen Sidhe 26 November 2019 в 20:20
поделиться

Вы, ребята, также можете рассмотреть возможность разбора входной строки вроде "user@company.com" или "user@domain".

Это то, что я сейчас делаю:
Если строка содержит '\', то разделите строку на '\' и извлеките имя пользователя и домен
. Иначе если строка содержит '@', то разделите строку на '@' и извлеките имя пользователя и домен
. Иначе относитесь к строке как к имени пользователя без домена

Я все еще охочусь за лучшим решением в случае, если входная строка находится не в легко предсказуемом формате, т.е. "domain\user@domain". Я думаю, что RegEx...

Обновление: Я стою на месте. Мой ответ немного выходит за рамки контекста, он относится к общему случаю разбора имени пользователя и доменов из пользовательского ввода, как в подсказке входа/входа в систему. Надеюсь, это кому-нибудь еще поможет.

4
ответ дан 26 November 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: