2

저는 .NET 및 MVC3을 새로 도입했으며 현재 오랫동안 유지되어 온 클래식 ASP 사이트를 MVC3 응용 프로그램 사이트로 변환하는 중입니다.<location> 속성 내 MVC3 <인증> 및 <인증>

동일한 사이트에는 고유 한 로그인 페이지와 액세스 및 보안의 개별 레벨이 필요한 네 개의 영역이 있습니다. 나는 내 응용 프로그램의 내부 영역을 설정할 수 다음 설정 <location> 속성을 사용하려면, 대신

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Logon" timeout="2880" /> 
</authentication> 

: 이것은 내가 내 web.config 파일에서 기본 코드를 사용하지 않으려는 의미 각 인증에 대한 인증 및 권한 부여 규칙. 나는이 세 줄을 제거하면

<location path="AreaName"> 
<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/AreaName/Login" timeout="15" /> 
    </authentication> 
    <authorization> 
    <deny users="?"/> 
    </authorization> 
</system.web> 
</location> 

: 그래서 예를 들어 내가 경로에의 전망에 액세스하려고 "AREANAME"때 그런

<authentication mode="Forms"> 
    <forms loginUrl="~/AreaName/Login" timeout="15" /> 
    </authentication> 

을 나는 ~/다시 처음 리디렉션 계정/로그온.

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.

나는이 오류에 대해 검색하고 만든 제안 중 어느 것도 적용 보이지 않는다 : 나는 다시 그 세 줄을 두는 경우에, 나는 다음과 같은 오류가 발생합니다. 나는 로직 대신 컨트롤러에 놓아야 할 웹 설정 대신에 하나의 대답을 보았지만 그 방법은 여전히 ​​전체 사이트에 기본값 <authentication>을 사용한다는 것을 의미합니다.

왜 내 <authentication> 속성을 <location> 안에 넣을 수 없는지 알 수 없습니다. 이것에 대한 도움이 가장 감사 할 것입니다.

이 질문에 잘못 말하면 사과드립니다.

+0

ASP.NET 프레임 워크의 Machine.config 파일에서 인증 섹션에 allowDefinition = "MachineToApplication"이 (가) 설정되어 있기 때문인 것으로 보입니다. 그래서 내 질문에 것 같아요, 거기에 machine.config에 설정을 over-ride하고 내 응용 프로그램 web.config 파일에서'allowDefinition = "Everywhere"를 말하도록 설정합니까? – Peter

답변

0

아마도 사용자 지정 멤버 자격 공급자와 사용자 지정 역할 공급자 (필요할 경우)가 필요합니다. 여기에 예제 게시 Custom membership providers in ASP.NET ... 사용자 지정 역할 공급자를 사용해야 할 우려가있는 경우. ..

+0

고마워요.하지만 제 질문에 언급했듯이 모든 로그인 페이지가 단일 로그인 페이지를 통해 퍼져 나가는 데는 관심이 없습니다. 결국에는 보호되는 각 영역마다 고유 한 로그인 페이지를 갖기를 원합니다. 마지막 단계는 여전히 컨트롤러의 개별 액션에'[Authorize]'지시문을 적용하는 것을 보여줍니다. – Peter

+0

ok ... 내 다음 질문은 다중 로그인 페이지가 있어야하는 이유입니다. 회원 역할을 할 수있을 때 ... 예를 들어 관리자 영역이있는 경우를 말하면 ... 로그인 페이지가 별도로 필요하지 않습니다. 관리자 ... 여전히 동일한 로그인 페이지를 사용할 수 있지만 이번에는 사용자 ID에 admin 역할을 추가하고 authorize 속성은 [Authorize (Roles = RoleNames.Admin)]처럼 보일 것입니다. ..이 방법을 사용하면 하나의 로그인 페이지를 사용할 수 있습니다 ... – NiK

+0

처음부터 사이트를 만들지는 않습니다 - 네 개의 영역에는 각각 고유 한 사용자 데이터베이스가 있으며 그 중 세 개의 영역에는 사용자와 관리자가 액세스 할 수있는 기능이 있습니다 - 그리고 관리자 한 영역의 관리자는 두 번째 영역 또는 세 번째 영역의 관리자가 아닙니다. 이러한 데이터베이스는 병합되거나 변경 될 수 없으며 새로운 데이터베이스를 사용하여 시작하거나 폐기 할 수 없습니다. 위치 수준에서 고유 한 권한을 부여 할 수없는 이유는 무엇입니까? – Peter

관련 문제