2011-11-18 3 views
2

ASP.net MVC 3 응용 프로그램에서 Windows 인증을 사용하고 있습니다. 내 시스템에는 몇 가지 역할이 있습니다.ASP.net MVC - Windows 인증을 사용하는 여러 환경에서 AuthorizeAttribute 사용

Administrator 
PowerUser 
GeneralUser 

각 환경에서 광고 그룹 이름이 다른 규칙이 있습니다.

예를 들어, 개발에 역할 이름은 다음과 같습니다

생산에서
Administrator_Dev 
PowerUser_Dev 
GeneralUser_Dev 

은 그냥 것 : 변경하지 않고 서로 다른 환경에서 권한 부여를 사용하기위한 좋은 해결책은

Administrator 
PowerUser 
GeneralUser 

있는가 다른 환경에 배포해야하는 경우 코드?

답변

1

모든 역할을 구현할 수는 없습니까? 생산 현장 인 Administrator_Dev 역할의 기회 ...

[Authorize(Roles = "Administrator_Dev, Administrator")] 
+0

나는 할 수는 있겠지만 실제로는 내 코드에서 그걸 보길 좋아하지 않습니다. 문제보다 선호도가 더 높을 것 같습니다. 단지 더 우아한 해결책이 있기를 바랬습니다. – Dismissile

+0

@Dismissile - 실제로는 매우 우아하다고 생각합니다. 적어도 Aliostad의 솔루션보다 더 우아합니다. 다른 옵션은 Web.Config 항목으로 추가하고로드하는 것입니다.이 작업은 훨씬 못 생기고 더 많은 두통입니다. –

+0

@Mystere Man - web.config에서로드 할 수 없다고 생각합니다. 속성에 전달 된 인수는 컴파일시 해결되어야합니다. 나는이 두 문자열을 모두 상수 변수에 넣는 것을 잊지 말고 두 가지 솔루션을 모두 찾았습니다. –

1

내가 생각할 수있는 유일한 해결책은 조건부 컴파일입니다.

조건부 컴파일로 파일에 이러한 상수를 정의하십시오.

#if DEV 
public const string AdministratorGroupName = "Administrator_Dev"; 
#else 
public const string AdministratorGroupName = "Administrator"; 
#endif 

이것은 컴파일 타임에 정의해야하는 사용자 지정 특성을 사용하는 선언적 권한 부여의 문제점 중 하나입니다.

또 다른 대안으로 다른 맞춤 속성을 사용하고 직접 액션 필터를 구현하는 것입니다.

0
단순히 응용 프로그램에서 환경 특정 광고 그룹의 이름을 넣어, Web.config의에서 응용 프로그램 특정 구성 섹션을 만들어 한

이 아니라면 구성 섹션을 선택한 다음 권한 부여 특성에 대한 구성 등록 정보를 사용하십시오. 그런 다음 각 환경에 대해 사용자 지정 web.config를 사용하여 그룹 이름을 변경할 수 있습니다. 대부분의 응용 프로그램에서는 각 환경에 대해 서로 다른 연결 문자열을 사용할 수 있어야합니다. 이를 통해 내장 된 Authorize 속성을 사용할 수 있습니다.

+0

이것은 내가 필요로하는 것처럼 들리지만, web.config에 익숙하지 않습니다; 이것의 예가 도움이 될 것입니다. – Crwth

관련 문제