2012-01-17 2 views
0
<authentication mode="Windows"/> 
     <authorization> 
      <allow users="USERS"/> 
      <allow roles="ROLES"/> 
      <deny users="*"/> 
     </authorization> 

여기에 if 문을 써서 내가 어떤 URL인지 알아낼 수있는 방법이 있습니까? 특정 URL에 대해 특정 역할을 허용 할 수 있습니다.web.config의 url에 따라 다른 역할 설정하기

If (UCase(Url) = UCase("URL")) Then 
<allow roles="ROLES"/> 
ElseIF(UCase(Url) = UCase("URL")) Then 
<allow roles="ROLES"/> 
ElseIF (UCase(Url) = UCase("URL")) Then 
<allow roles="ROLES"/> 
End If 
<deny users="*"/> 

이 심지어의 Web.config에 허용 : 내 머리에

예제 코드는 내가 가지보고 싶은? 이 일을 어떻게하면 안할 수 있을까요?

나는 3 개의 웹 사이트가 있습니다. Dev, UAT 및 PROD에 하나. 이제 각 사이트마다 각 설정마다 다른 사용자 그룹이 있습니다. 나는 단지 내가 찾고있는 URL을 찾고 특정 사용자 그룹을 가리킬 수있는 방법을 찾고 싶다. 조건문을 수행 할 수 없기 때문에 각각에 대해 web.config을 만들어야한다고 생각합니다. 내가 각각 web.config을 만들어야한다면 어떻게 설정해야합니까?

+0

연결 문자열은 무엇을합니까? (나는 각 응용 프로그램마다 다른 데이터베이스를 가지고 있다고 가정합니다) – davidsleeps

+0

@davidsleeps 3 개의 별도 연결 문자열을 설정했습니다. 각각 하나씩 – Samjus

답변

2

편집

가장 좋은 옵션의 Web.config 파일에 대해 무엇 각 Web.config의 서로 다른 구성 설정을하는 것입니다 (나는 당신의 문제가 지금은 다른 생각으로 전체 답을 변경). 매번 web.config를 수동 또는 자동으로 배포하는 경우 배포 프로세스를 살펴야 할 수도 있습니다.

또 다른 옵션은 응용 프로그램이 실행중인 환경을 알고 코드를 사용하여 액세스를 거부함으로써 권한 부여를 수행하는 것입니다. 이 경로는 이미 제공된 것보다 분명히 많은 작업이지만 옵션입니다.

+0

참고 :이 파일을 주 web.config 파일에 추가하는 대신 영향을받는 각 하위 폴더에 적절한 권한 요구 사항이있는 다른 web.config 파일을 실제로 배치 할 수 있습니다. – NotMe

+0

@Chris, 어쩌면 나는 그것을 올바르게 읽지 못했을 것입니다 ... 다시 읽는다면, 이것은 여전히 ​​효과가있을 것입니다. 물론 그는 많은 역할을하고 모든 가능한 역할에 대해 정의해야합니다 ... – davidsleeps

1

그리고 대부분의 경우 하위 폴더에 web.config 파일을 추가해야합니다. 폴더 자체는 누가 액세스 할 수 있는지 정의합니다. 이 web.configs에서 부모 폴더 인증을 무시할 인증 섹션 만 있어야합니다. 이 MVC는 의미있는 폴더를 제거했기 때문에 단지, 웹 양식에서 제대로 작동하고 완전히 다른 보안 모델을 지원 일반적으로

당신이 배포하는 경우

1

(컨트롤러는 새로운 보안 속성을 통해 액세스를 파악하는 것) 동일한 웹 응용 프로그램 ~ 환경에서는 web.config 변환을 사용하는 것이 좋습니다. 이 방법을 사용하면 기본 개발 web.config를 취하게 될 각 환경에 대해 특별한 파일을 가질 수 있으며 값을 <authorization> 태그 (또는 원할 경우 <connectionStrings> 또는 <appSettings> 태그)로 변경하십시오. Visual Studio에서

그것은 다음과 같습니다.

web.config transform files

웹 응용 프로그램 프로젝트에 대한이 유일한 작품이 아닌 웹 사이트 프로젝트 ()에 대한, 단지 비주얼 스튜디오 2010 이상에서 *

먼저 각 환경에 대한 솔루션 구성을 만들어야합니다. 기본 메뉴에서 Build > Configuration Manager을 선택하십시오. 여기에서 각 구성을 관리 할 수 ​​있습니다.기본적으로 당신이 릴리스디버그이있을 것이다, 당신은 예를 들어, 당신의 솔루션을 UAT생산을 구성을 추가 할 수 있습니다.

그런 다음 당신은 당신의 웹 응용 프로그램 프로젝트의 web.config 파일을 마우스 오른쪽 버튼으로 클릭하고 이 설정은 변환 추가를 클릭하고 찾을 새로운 각 구성에 대한 변화시킬 수 있습니다

web.config 
    web.Debug.config 
    web.Production.config 
    web.Release.config 
    web.UAT.config 

은 이제를 작성해야합니다 변환, 귀하의 경우, 그것은 (web.UAT.config 용)과 같을 것이다 : 우리는 변화를 지시하는 방법

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <system.web> 
    <authorization xdt:Transform="Replace"> 
     <allow roles="USER-ACCEPTANCE-TEST" /> 
     <deny users="*" /> 
    </authorization> 
    <system.web> 
</configuration> 

공지 사항이 완전히 <authorization> 태그를 대체 할 수 있습니다. 이 문제는 웹 응용 프로그램을 게시 할 때 발생합니다 (예 : 게시 ...). 예를 들어 FTP를 통해 UAT 서버로 전송할 수있는 바탕 화면의 폴더를 선택합니다.

몇 가지 튜토리얼 여기를 참조하십시오 : 당신이 기술적으로 웹 사이트 프로젝트에서 사용할 수 있지만

+0

나는 당신은 Visual Studio 2005를 사용하고 있다는 것을 알고 있습니다. – Samjus

+0

아, 나쁘지 만, 좋은 기능입니다. 이전에는 XSLT 스타일 시트를 사용하여 [명령 행 처리기] (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21714)를 사용하여 web.config 파일을 변환했습니다. Visual Studio에 통합되어 있지는 않지만 MSBuild에 작업으로 추가 할 수 있습니다. –

관련 문제