ASP.Net MVC 응용 프로그램에서 작업하고 있습니다. 인증되지 않았거나 AD 그룹에없는 모든 사용자에 대한 액세스를 거부하고 싶습니다. 이 AD 그룹 만 액세스 할 수 있어야합니다. 이것에 대한 예외는 "당신은지나 가지 않을 것입니다!" 페이지. 누구나 액세스 할 수 있습니다. 프로젝트 루트에서 권한 설정 및 "액세스 거부"페이지 설정
, 나는 (파일의 나머지 부분이 간결 트리밍) 내 Web.config의이 있습니다<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="401" redirect="/ui/Other/YouShallNotPass.html" />
</customErrors>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
<authentication mode="Windows" />
<authorization>
<allow roles="allowedrole"/>
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<httpErrors>
<remove statusCode="401" />
<error statusCode="401"
subStatusCode="2"
responseMode="ExecuteURL"
path="/ui/Other/YouShallNotPass.html" />
</httpErrors>
</system.webServer>
</configuration>
나는
ui/Other/YouShallNotPass.html
옆에 앉아 두 번째의 Web.config 있습니다. 내가 존재하지 않는 하나에 AD 그룹을 설정하여이를 테스트 할 수있어
<configuration>
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</configuration>
:이 기타의 방법으로 인증하거나, 누군가가이 페이지에 액세스 할 수 있도록 기대합니다. 나는 존재하지 않는 그룹의 일부가 아니기 때문에 YouShallNotPass.html
페이지를 볼 것으로 예상됩니다.
예상대로 작동하지 않습니다. 브라우저에서 다음 오류가 표시됩니다.
오류 메시지 401.2 : 허가되지 않음 : 서버 구성으로 인해 로그온하지 못했습니다. 제공 한 자격 증명 및 웹 서버에서 사용할 수있는 인증 방법을 기반으로이 디렉터리 또는 페이지를 볼 수있는 권한이 있는지 확인하십시오.
YouShallNotPass.html
을 직접 요청하면 사용자/패스를 묻는 메시지가 표시되면 액세스 할 수 있습니다.
내가 뭘 잘못하고 있니? 사용자가 권한이없는 경우 왜 401 페이지를 제공하지 않습니까?
'YouShallNotPass.html'의 web.config 파일에' '을 삽입하고 어떻게되는지보십시오. 브라우저가 여전히 사용자/패스를 묻는 메시지를 표시하기 때문에 페이지에 Windows 인증이 필요하다는 것을 의미합니다 (기본 web.config에 입력 했으므로 덮어 쓰지 않았으므로). –
Alisson
'YouShallNotPass.html'을 직접 요청할 때 더 이상 사용자/패스를 묻지 않습니다. 하지만 다른 페이지와 나는 여전히 원래의 오류가 발생합니다. – Amy
액세스 풀 사용자가 인증하려는 데이터베이스에 액세스 할 수 없습니까? –