2010-06-23 4 views
0

사용자가 로그인 할 수있는 Windows 양식 응용 프로그램이 있습니다. 응용 프로그램은 혼자이며 아무거나 누구와도 연결되지 않습니다.로그인 한 사용자의 가치를 얻는 가장 좋은 방법은 무엇입니까?

전역 변수를 만드는 것 외에 현재 사용자 권한을 확인하기 위해 쉽게 액세스 할 수있는 변수를 어떻게 가질 수 있습니까?

일을 그렇게 친절하게 수행하는 방법은 Form 생성자에서 userType의 ID를 전달하고 그에 따라 .Enable = false; 버튼에는 사용할 수있는 권한이 없습니다.

감사합니다.

답변

3

당신이 원하는 경우 현재 윈도우 로그온 한 사용자의 ID (예 : 응용 프로그램으로 실행되고있는 사용자입니다.), 두 가지를 가져 오는 방법이 있습니다 : 시동에 AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 넣어

  1. 는, Thread.CurrentPrincipal을 사용하여 사용자의 보안 주체를 가져올 수 있습니다.
  2. WindowsIdentity.GetCurrent()을 사용하면 현재 사용자의 신원을 확인할 수 있습니다. new WindowsPrincipal(identity)을 사용하여 보안 주체를 만들 수 있습니다.

두 가지 모두 동등하므로 사용 권한을 확인하는 데 사용할 수있는 IsInRole 메서드가있는 security principal이 표시됩니다.

0

System.Security.Principal.WindowsIdentity 아래에있는 사용자 Identity를 가져 오는 데 WindowsIdentity 클래스를 사용하십시오.

WindowsIdentity current = WindowsIdentity.GetCurrent(); 
Console.WriteLine("Name:" + current.Name); 

는 System.Security.Principal.WindowsPrincipal 아래에있는 사용자 역할을 얻기위한 WindowsPrincipal 클래스를 사용합니다.

WindowsIdentity current = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(current); 

if (principal.IsInRole("your_role_here") 
{ 
Console.WriteLine("Is a member of your role"); 
} 
관련 문제