programing

사용자를 구문 분석하는 데 기본 제공되는 도우미입니다.신원.도메인에 이름을 지정합니다.사용자 이름

iphone6s 2023. 9. 14. 21:49
반응형

사용자를 구문 분석하는 데 기본 제공되는 도우미입니다.신원.도메인에 이름을 지정합니다.사용자 이름

구문 분석할 내장 유틸리티나 도우미가 있습니까?HttpContext.Current.User.Identity.Name,예.domain\user도메인 이름이 존재하고 사용자가 있는 경우 별도로 도메인 이름을 얻을 수 있습니까?

아니면 그렇게 할 다른 수업이 있습니까?

전화하기가 매우 쉽다는 것을 알고 있습니다.String.Split("\")흥미롭기만 하군요

이것이 더 좋습니다(사용하기 쉽고,문자열과 널 문자열을 동일하게 취급하는 것에 대한 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이 필요하지 않습니다.

System.Environment.UserDomainName도메인 이름만 제공합니다.

유사하게,System.Environment.UserName사용자 이름만 제공합니다.

var components = User.Identity.Name.Split('\\');

var userName = components.Last() 

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

또한 "user@company.com " 또는 "user@domain"과 같은 문자열 입력을 구문 분석하는 것도 고려해 볼 수 있습니다.

이것이 제가 현재 하고 있는 일입니다.
문자열에 '\'이 포함되어 있으면 '\'에서 문자열을 분할하고 사용자 이름과 도메인을 추출합니다.
기타 문자열에 '@'이 포함되어 있으면 '@'에서 문자열을 분할하고 사용자 이름과 도메인을 추출합니다.
그렇지 않으면 문자열을 도메인이 없는 사용자 이름으로 처리합니다.

입력 문자열이 쉽게 예측할 수 있는 형식이 아닌 경우, 즉 "domain\user@domain"에 대해서는 여전히 더 나은 해결책을 찾고 있습니다.RegEx가...

업데이트: 정정합니다.제 대답은 사용자 로그인/로그온 프롬프트와 같이 사용자 입력에서 사용자 이름과 도메인을 구문 분석하는 일반적인 경우를 말합니다.그래도 누군가에게 도움이 되길 바랍니다.

나도 아니라고 생각해 왜냐하면 저번에 내가 똑같은 질문을 했기 때문이야 :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;
}

그건 아닌 것 같아요, 시스템이니까요.보안.주요한.창문들ID에 해당 멤버가 없습니다.

비록 a는 아니지만.NET 내장, 항상 Cred에 P/Invoke 할 수 있음UIParseUserName.에서 사용하는 방법에 대한 예시가 있습니다.그물.

추신: 에 나와 있는 것처럼 "점"을 처리하지 않는 것 같습니다.\n\n".

정규 표현식으로 해결하기 위해 만든 문제인 것 같습니다.

public static class UserExtensions
{
    public static string GetDomain(this IIdentity identity)
    {
        Regex.Match(identity.Name, ".*\\\\").ToString()
    }

    public static string GetLogin(this IIdentity identity)
    {
        return Regex.Replace(identity.Name, ".*\\\\", "");
    }
}

언급URL : https://stackoverflow.com/questions/349520/built-in-helper-to-parse-user-identity-name-into-domain-username

반응형