사용자를 구문 분석하는 데 기본 제공되는 도우미입니다.신원.도메인에 이름을 지정합니다.사용자 이름
구문 분석할 내장 유틸리티나 도우미가 있습니까?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
'programing' 카테고리의 다른 글
| HTML 선택 요소의 선택한 옵션 변경 (0) | 2023.09.14 |
|---|---|
| Word에서 메뉴 활성화하기 3개 테마 누르기 (0) | 2023.09.14 |
| 인증된 사용자의 역할 저장/할당 (0) | 2023.09.14 |
| SQL 파일로 데이터베이스 만들기 (0) | 2023.09.14 |
| TypeScript로 데이터베이스 버전을 확인하는 방법? (0) | 2023.09.14 |