도메인 없이 사용자 이름을 가져오는 방법
aspx 페이지에서 기능이 있는 Windows 사용자 이름을 가져옵니다.Request.LogonUserIdentity.Name
이 함수는 "domain\user" 형식의 문자열을 반환합니다.
사용자 이름만 얻을 수 있는 기능이 있습니까?IndexOf
그리고.Substring
,이렇게요?
public static string StripDomain(string username)
{
int pos = username.IndexOf('\\');
return pos != -1 ? username.Substring(pos + 1) : username;
}
Windows 인증을 사용하는 경우.이는 간단히 전화를 통해 달성할 수 있습니다.System.Environment.UserName
사용자 이름만 제공됩니다.사용할 수 있는 도메인 이름만 원하는 경우System.Environment.UserDomainName
그렇게 생각하지 않습니다.나는 이전에 이 방법들을 사용하여 사용자 이름을 얻은 적이 있습니다.
var user = System.Web.HttpContext.Current.User;
var name = user.Identity.Name;
var slashIndex = name.IndexOf("\\");
return slashIndex > -1
? name.Substring(slashIndex + 1)
: name.Substring(0, name.IndexOf("@"));
또는
var name = Request.LogonUserIdentity.Name;
var slashIndex = name.IndexOf("\\");
return slashIndex > -1
? name.Substring(slashIndex + 1)
: name.Substring(0, name.IndexOf("@"));
부품[1]을 얻는 것은 안전한 방법이 아닙니다.LINQ를 사용하고 싶습니다. 마지막():
WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
if (windowsIdentity == null)
throw new InvalidOperationException("WindowsIdentity is null");
string nameWithoutDomain = windowsIdentity.Name.Split('\\').Last();
를 사용하는 경우.NET 3.5 언제든지 Windows 확장 방법을 만들 수 있습니다.이 작업을 수행하는 ID 클래스입니다.
public static string NameWithoutDomain( this WindowsIdentity identity )
{
string[] parts = identity.Name.Split(new char[] { '\\' });
//highly recommend checking parts array for validity here
//prior to dereferencing
return parts[1];
}
코드의 어디에서나 참조만 하면 됩니다.
부탁한다.로그온 사용자 ID.도메인이 없는 이름();
static class IdentityHelpers
{
public static string ShortName(this WindowsIdentity Identity)
{
if (null != Identity)
{
return Identity.Name.Split(new char[] {'\\'})[1];
}
return string.Empty;
}
}
이 코드를 포함하면 다음과 같은 작업을 수행할 수 있습니다.
WindowsIdentity a = WindowsIdentity.GetCurrent();
Console.WriteLine(a.ShortName);
분명히 웹 환경에서는 콘솔에 글을 쓰지 않을 것입니다. 단지 예시일 뿐입니다.
다른 방법과 동일한 작업을 수행하는 다른 방법은 다음과 같습니다.
var usernameWithoutDomain = Path.GetFileName(@"somedomain\someusername")
@ 변형된 사용자 이름을 확인하지 않기 때문에 안전하지 않습니다.
정규 표현식을 사용하자고 제안했지만 너무 많이 사용할 것입니다.[시스템.끈.분할](http://msdn.microsoft.com/en-us/library/b873y76a(VS.80).aspx) 이 작업을 수행합니다.
string[] parts= username.Split( new char[] {'\\'} );
return parts[1];
언급URL : https://stackoverflow.com/questions/330320/how-to-get-username-without-domain
'programing' 카테고리의 다른 글
mariadb JDBC 드라이버를 사용하여 로그인하면 SQLNonTransientConnection이 생성됩니다.예외. (0) | 2023.08.19 |
---|---|
두 개의 나란히 있는 div 요소를 동일한 높이로 유지하려면 어떻게 해야 합니까? (0) | 2023.08.19 |
xml 파일에서 보기를 부풀린다는 것은 무엇을 의미합니까? (0) | 2023.08.19 |
ESLint - '프로세스'가 정의되지 않았습니다. (0) | 2023.08.19 |
Oracle에서 열이 가상인지 확인하는 방법은 무엇입니까? (0) | 2023.08.19 |