2010-02-08 3 views
1

새로운 녹색 필드 ASP.Net 응용 프로그램에서 작업하고 있습니다. 우리는 모든 페이지가 기반이되는 기본 페이지를 구현하고 있습니다. 응용 프로그램은 Windows Auth 통합 아래에서 실행되므로 사용자의 계정 세부 정보를 갖습니다. 이것들과 함께, 각 db에서 어떤 역할이 할당되었는지 알아보기 위해 몇 가지 데이터베이스 (사용자가 존재할 것입니다)로 갈 것입니다. 나는 bool 배열에서 yay/nay 역할을 맡을 것이고 열거 형을 통해 키를 입력 할 것이다.SQL 역할 보안 + 사용자 지정 ASP.Net 기본 페이지

몇 가지 항목을 보유 할 세션 개체와 해당 사용자에게 할당 된 역할이 있습니다. 코드 이런 식으로 뭔가 될 것 같은 나는 기본 페이지의 속성으로 세션 개체를 사용할 수 있도록 생각하고 :

제 (서브 분류) 페이지에서 발생하는 제어하기 위해
public SessionObject MasterSessionObject 
{ 
    get 
    { 
     if (Session["SessionObject"] == null) 
     { 
      // Create session object, assign user name, etc. 
      // Do something with roles... 
      Session["SessionObject"] = sessionObject; 
     } 
     return (SessionObject)Session["SessionObject"] 
    }   
} 

, I CheckSecurity 메소드를 제공하고 싶습니다. 사용자가 페이지의 특정 부분에 대한 권한이 없으면 숨기거나 비활성화 할 수 있습니다. 또는 사용자가 아닌 페이지로 다시 부팅 할 수 있습니다. 논리적 인 장소는 기본 페이지이지만 기본 페이지가 이미 역할 사용 권한을 보유한 SessionObject를 노출하고있는 것을 볼 때 DatabaseSecurity 유형 객체를 생성하고이를 확인하는 것이 더 바람직하지 않습니까?

후자의 접근 방법을 다루기 위해 필자는 추상 기본 클래스를 사용하여 지금까지 나를 구했다. 나는 bool 배열을 포함하는 DatabaseRoles 추상 클래스와 사용자 역할을 검색하는 메서드를 가지고있다. 구상 클래스의 구현에는 Enum (전술)이 보관 유지됩니다. 추상 클래스에는 또한 int를 취하는 CheckRole 메서드가 있습니다.이 메서드는 열거 형의 캐스트를 사용하려고합니다. ...

SessionObject에는 이러한 DatabaseRoles 구현이 여러 개 포함되어 있습니다. 상기 실제 페이지에 다음과 같은 코드로 이어지는 기본 페이지 클래스에서보기 CheckSecurity, 다음을가 있었다면

if (MasterSessionObject.SampleDatabaseRoles.Check((int)SampleDatabaseRolesEnum.RoleView)) 
{ 
    // Do something 
} 

하지만, 난 당신이 동의 할 거라고 확신, 그것은

... 짜증나 보인다 기본 페이지의 CheckSecurity 메소드를 사용하면 구체적인 DatabaseRoles 객체를 가져와야 할뿐만 아니라 확인할 역할의 열거 형을 가져야합니다. 알았어. 그리고 마지막으로 ... 필요한 경우 내일 코드를 추가 할 것입니다

이상의 데이터베이스 및 보안 설정을 추가 할 나중에 요구 ...있을 것입니다 : -s 난 몰라

, 내가 ' 당신이 ASP.Net/ASP.Net을 사용하는 일 경우

마이크 K.

답변

0

을 주셔서 감사합니다 ... 그 두께가 아니에요,하지만 난 힘든 시간을 때로는이 모든 함께 결합해야합니까 MVC,이 작업을 수행 할 수있는 가장 좋은 장소는 사용자 정의 HTTP 모듈을 통해 처리 될 것이라고 말하고 싶습니다. AuthenticateRequest 메서드 &은 요청이 인증 된 경우에만 요청을 계속합니다. 이 코드에는 수많은 온라인 우수 기사가 있습니다.

또한 - 역할 ASP.Net의 & 구성원을 살펴 가지고 - 그것은 & 일반적으로 꽤 좋은 대부분의 요구 사항을 만족 또는 당신은 항상 그것을 확장 무료입니다. 다시 - 맞춤 멤버십 제공 업체에 관한 기사가 많이 있습니다 ...

내가 뭔가를 놓치지 않는 한 - HTH.

+0

감사합니다. http 모듈 팁을 고려해 보았습니다. 고려하지 않았습니다. ASP는.Net Roles and Memberships, 나는 그 사람들을위한 열매 다. 그러나 이번에는 고려하지 않았다. -s –

+0

또한, 나는 (HTTP 모듈이 할 수있는 것처럼) 사람들을 다른 페이지로 바운스시키지 않고, CheckSecurity 기본 페이지 메서드를 사용하여 서브 클래 싱 된 페이지를 변경합니다 (예 : 버튼을 사용 중지하고 패널을 숨기고 등등. –

관련 문제