2014-06-12 1 views
0

asp.net mvc 5.1, asp.net identity 2.0을 사용하여 프로젝트를 만들었습니다. IIS에 배포 한 후 로그인 후 https://www.xxxx.com으로 이동하면 페이지 'https://www.xxxx.com/Account/Login'을 보호하기 위해 이동합니다. Request.IsAuthenticated는 _LoginPartial.cshtml 페이지에서 true를 반환하지만 http://www.xxxx.com으로 이동하면 항상 false를 반환합니다.Request.IsAuthenticated는 https 및 http 페이지에서 다른 값을 반환합니다.

답변

1

HTTPS를 통해 인증 쿠키 만 보내도록 설정되어있는 것처럼 들릴 수 있으므로 HTTP를 통해 페이지로 이동하면 인증 쿠키가 전송되지 않고 애플리케이션에서 인증되지 않은 것으로 판단됩니다.

당해 설정은 system.web/authentication/forms

<authentication mode="Forms"> 
    <forms name="auth" loginUrl="~/login" requireSSL="true" /> 
</authentication> 

requireSSL이며 이는 secure 재산권 인증 쿠키에 사용되는지 여부를 제어한다.

HTTPS를 사용하고 있으므로 HTTP를 통해 사이트를 탐색하지 못하도록하는 것이 좋습니다.

0

RequireSSL은 쿠키가 https를 통해서만 전송되도록 허용합니다. 이 특정 요구 사항이있는 경우 코드에서 추가 예방 조치를 취해야합니다.

하지만 지금은 무엇을하고 있는지 조심하십시오.

적절한 위치에서 Request.IsSecureConnection을 사용할 수 있습니다. 모듈 또는 필터의 기본 클래스에있을 수 있습니다.

날짜가 지난 기사는 여기에 있지만 포인터 역할을 할 수 있습니다. http://r2d2.cc/2011/08/05/how-to-switch-between-http-and-https-in-asp-net-mvc2-and-allow-ajax-requests-from-site-master/

주의 : 하이재킹을 피하기 위해 서버를 추가로 조심해야합니다.

관련 문제