2013-06-17 2 views
0

사용자 계정으로 처음 로그인하는 응용 프로그램을 만듭니다. 이 사용자 계정은 내 응용 프로그램 데이터베이스의 Windows 또는 자체 관리 계정 일 수 있습니다.개체에 현재 컨텍스트를 전달하는 방법 C#

이제 응용 프로그램의 비즈니스 개체에 액세스하기 전에 로그인 한 사용자에게 권한을 부여하고 싶습니다. 개체는 데이터베이스 테이블과 매핑되므로 결국 사용자에게 데이터를 다시 제공할지 여부를 사용자에게 승인하려고합니다.

로그인 한 후 UserCredential 클래스의 개체로 사용자 자격 증명을 전역으로 저장합니다. 그러나 나는 그것을 생성 할 때 각 객체에이 자격 증명을 전달하고 싶지 않습니다.

내가 추가로 만들고있는 각 비즈니스 개체에 대해 응용 프로그램 컨텍스트 (전역으로 저장된 UserCredential 개체 포함)를 확인/도달 할 수있는 방법이 있습니까?

나는 이것을 C#에서 원한다. 코드 예제는 많이 감사하겠습니다. Thread.CurrentPrincipal 보안의 주장과 일치하지 않는 경우 PrincipalPermissionAttribute는 SecurityException를 슬로우

PrincipalPermissionAttribute class MSDN documentation

:

+0

는 [I 제안] 종속성

[PrincipalPermission(SecurityAction.Demand, Name = "GDroid")] public void YourBusinessMethod() { // Do something } 

사용자는 관리자 역할에 속 주입. – user2246674

+0

또한 "자격 증명"을 전달하지 말고 자격 증명에서 이전에 설정 한 사용자/권한 부여 정보 만 전달하십시오. 웹 서비스에서 이는 요청 시작시 확립 될 수 있습니다. – user2246674

+0

샘플 C# 코드를 제공해 주시겠습니까? 가능한 한 매우 빠른 하나? 승인 정보를 전달함으로써 이해했습니다. 그러나 Dependency injection을 사용하기위한 샘플 코드는 많이 감사 할 것입니다 ... !! - 감사합니다 – GDroid

답변

0

당신은 PrincipalPermissionAttribute 클래스를 살펴한다, 여기에 MSDN 문서입니다.

예 :

사용자의 이름이 GDroid입니다 :

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")] 
public void YourBusinessMethod() 
{ 
    // Do something 
} 

사용자가 인증 :

[PrincipalPermission(SecurityAction.Demand, Authenticated = true)] 
public void YourBusinessMethod() 
{ 
    // Do something 
} 
관련 문제