ASP.NET MVC 응용 프로그램에서는 승인 된 전용 페이지에 액세스하려고 시도 할 때 의 <authentication>
섹션을 통해 사용자를 로그온 페이지로 자동 리디렉션합니다. 문제는 도구에서 사용하도록 설계된 응용 프로그램 중간의 한 동작이 잘못된 액세스로 인해 곧바로 HTTP 401 응답을 반환해야한다는 것입니다. 이 특정 작업에 대한 리디렉션없이 실제 HTTP 401 코드 을 반환하려면 어떻게해야합니까?한 페이지에 대한 ASP.NET 양식 인증 덮어 쓰기
5
A
답변
6
다음 솔루션 작동, 나는 그것이 최적의 전혀 확실하지 않다하더라도 :
public class HttpAuthenticationRequiredResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
var response = context.HttpContext.Response;
response.StatusCode = 401;
response.AddHeader("WWW-Authenticate", "Basic realm=\"whatever\"");
response.Flush();
response.Close();
}
}
그런 다음 수 HttpUnauthorizedResult 대신 위의 결과를 반환하여 필요한 401 코드를 생성합니다. 그러나 이것은 꽤 나에게 klugy를 느낀다.
4
별도의 경로에 대해 <system.web>
섹션을 분리 할 수 있습니다. 다음은 예입니다 :이 경우
<configuration>
<location path="Foo/Bar.aspx">
<system.web>
<authorization>
<allow roles="GoodGuys" />
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
페이지 "푸/Bar.aspx은"더 굿 가이즈 역할을 가진 사람에게 허용되지만 모든 다른 사람에게 거부됩니다.
귀하의 경우에는, 모든 인증없이 허용 할 수 있습니다 :
<configuration>
<location path="Foo/Bar.aspx">
<system.web>
<authentication mode="None" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
</configuration>
0
내가 원하지 않는 리디렉션 (기본적으로 인증이 실패한 방법과 오류 정보없이 로그인 화면으로 리디렉션되는 방법에 대한 메시지)을 트리거 한 무언가를 되돌려 줄 필요가있는 비슷한 경우가있었습니다. 이 똑바로 업 ASP.NET, 즉 일하는 것이 있다면
Response.SuppressFormsAuthenticationRedirect = true;
,하지만 난 ASP.NET MVC와 그 기술을 사용하는 방법을 분명 해요 :
이
문제를 해결했다. 문제는 should-return-401 URL이 myapp/{rout parameter}/tool에 있다는 것입니다. 원하는 경우에도 system.web에서 지정할 수있는 방법이 없습니다. –* 홍당무 * 나는 너의 포스트를 읽을 때 "MVC"를 보지 않았다. – Randolpho
인증 요소에 대해 작동하지만 인증을 위해 작동하지 않습니다. 다음 오류가 발생합니다. 이 요청을 처리하는 데 필요한 구성 파일 처리 중에 오류가 발생했습니다. 아래의 특정 오류 세부 정보를 검토하고 구성 파일을 적절히 수정하십시오. allowDefinition = 'MachineToApplication'으로 등록 된 섹션을 응용 프로그램 수준 이상으로 사용하면 오류가 발생합니다. –