누구나 GenericIdentity의 사용법 및 사용 위치를 간략하게 설명 할 수 있습니까?GenericIdentity 란 무엇입니까?
답변
현재 사용자에 대해 프로그래밍 방식으로 세부 정보를 제공하려는 Identity의 구체적인 구현으로 GenericIdentity를 사용할 수 있습니다. 다른 채널을 통해 사용자를 직접 확인하고 인증 한 경우 유용합니다.
당신은 거기 몇 가지 예를 찾을 수 밖에
http://msdn.microsoft.com/en-us/library/system.security.principal.genericidentity.aspx
확인합니다. 일반 사용자를 나타냅니다.
인증 및 프로필 퍼미션.
및 GenericPrincipal
은 사용자를 "주체"로 설명하는 가장 간단한 방법입니다.
string[] roles = { "User", "Admin" };
Thread.CurrentPrincipal = new GenericPrincipal(
new GenericIdentity("Fred"), roles);
당신은 시점에서이 작업을 수행 할 수 있습니다 사용자가 "사용자"와 "관리자"권한 "프레드"로 로그인 할 경우, 즉 -이 응용 프로그램에서 검사를 구현 인식 보안을 위해 사용할 수 있습니다 winform에 대한 클라이언트 로그인 또는 WCF, ASP.NET 등에서이 작업을 수행하는 특정 지점이 있습니다.
그런 다음 나중에 코드를 에 대한 액세스 권한을 확인하지 않고도이 권한을 확인할 수 있습니다. IsInRole 또는 선언적으로 :
[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
void SomeAdminFunction() { }
row.UpdatedBy = MyUtilityClass.GetUsername();
GenericPrincipal
이의 간단한 경우에 유용합니다 :
public static string GetUsername() {
IPrincipal principal = Thread.CurrentPrincipal;
IIdentity identity = principal == null ? null : principal.Identity;
return identity == null ? null : identity.Name;
}
public static bool IsInRole(string role) {
IPrincipal principal = Thread.CurrentPrincipal;
return principal == null ? false : principal.IsInRole(role);
}
그런 다음 당신은 당신의 DAL 일부 감사 코드가있을 수 있습니다 : 여기
몇 가지 유용한 유틸리티 코드는 교장/정체성 주위에 널 안전 래퍼입니다 일반 사용자 이름 및 알려진 역할 세트 더 복잡한 기본 구현은 예를 들어 "필요시"액세스 확인을 수행 할 수 있습니다. 즉, 모르는 "Foo"역할을 요청할 때까지는 (웹 서비스, 데이터베이스, 활성 디렉토리 등)에 저장하고 나중에 액세스 할 수 있도록 결과를 캐시합니다. 잠재적 역할 목록이 크고 일반적으로 에 쿼리되는 역할의 수가 적은 경우 유용합니다.
보안 주체를 사용하여 특정 컨텍스트 (예 : 보안 토큰)에만 필요한 추가 ID 정보를 저장할 수도 있습니다. 발신자는 보조 데이터가 지원되는지 확인하기 위해 교장을 as
으로 테스트 할 수 있습니다.
"principal"을 사용하면 논리 처리 코드가 winforms, ASP.NET, WCF, Windows 서비스 등이 아닌 신원을 말할 수 있기 때문에 유용합니다. 이는 추상적입니다. 또한 일부 제 3 자 코드는 또한 교장에게 말할 것입니다.
또 다른 예로서 나는 디자이너를 통해 winform 컨트롤에 대한 액세스를 제어하는 방법을 보여주는 일부 example code here을 작성했습니다 (IExtenderProvider
- VS에서 속성 표에 추가 항목을 넣음).
PrincipalPermission 특성은 어떻게 작동합니까? 메서드 호출시 Thread.CurrentPrincipal에 올바른 역할이 포함되지 않은 경우 예외가 발생합니까? – Svish
@Svish - 정확히 ('SecurityException'); 런타임이 직접 작용하는 (거의) 속성 중 하나입니다. –
GenericIdentity 클래스 : - GenericIdentity 클래스는 IIdentity 인터페이스를 구현합니다.응용 프로그램에서 정의한 사용자 지정 인증 방법을 기반으로 사용자의 ID를 나타냅니다. GenericPrincipal 클래스 : - GenericPrincipal 클래스는 IPrincipal 인터페이스를 구현합니다. 이는 Windows 사용자 및 해당 역할과 독립적으로 존재하는 사용자 및 역할을 나타냅니다. 기본적으로 일반 원칙은 응용 프로그램 인증 및 권한 부여를위한 간단한 솔루션입니다.
- 1. 스레드 란 무엇입니까 (스레드 란 무엇입니까?)?
- 2. CGI 란 무엇이며 CGI 스크립트 란 무엇입니까?
- 3. 개발 프레임 워크 란 무엇입니까? IDE 란 무엇입니까?
- 4. 버퍼 란 무엇입니까? 버퍼링 된 읽기 및 쓰기 란 무엇입니까?
- 5. DataContractTranslator 란 무엇입니까?
- 6. "분리 뮤텍스"란 무엇입니까?
- 7. 프로그래밍 언어 란 무엇입니까?
- 8. CSS - @page 란 무엇입니까?
- 9. Java의 직렬화 란 무엇입니까?
- 10. "기호 경고"란 무엇입니까?
- 11. 그림자 메모리 란 무엇입니까?
- 12. PHPSESSID 란 무엇입니까?
- 13. 정확히 PLINQ 란 무엇입니까?
- 14. ASP.Net MVC 란 무엇입니까?
- 15. 불량 선별기 란 무엇입니까?
- 16. 기능 테스트 란 무엇입니까?
- 17. 끈적 풋터 란 무엇입니까?
- 18. doctrine의 저장소 란 무엇입니까?
- 19. webdev.webservice 프로세스 란 무엇입니까?
- 20. CouchDB 란 무엇입니까
- 21. Html.Grid : IGridColumn.Attributes() 란 무엇입니까?
- 22. 오브젝트 노드리스트 란 무엇입니까
- 23. Lucene의 VInt 란 무엇입니까?
- 24. 인터페이스 란 무엇입니까
- 25. iPhone의 컨텍스트 란 무엇입니까?
- 26. 긴 포인터 란 무엇입니까?
- 27. 'Collada'장면 그래프 란 무엇입니까?
- 28. 평면 개체 란 무엇입니까?
- 29. getTcpBytesSent (mWhich) 란 무엇입니까?
- 30. this.parentElement 란 무엇입니까?
예제 예제와 함께 C# – vineth