컨트롤러 동작에 [RequireSSL] 속성을 추가하여 Https를 활성화 한 것으로 로그인 페이지를 만들었으므로 제대로 작동합니다. 그러나 성공적으로 로그인 한 후에는 https 환경에 남아 있지만 페이지는 https가 아닌 페이지입니다. 아무도 https에서 http 모드로 나가는 방법을 알려줄 수 있습니까? 이와 관련하여 도움을 주시면 대단히 감사하겠습니다.asp.net mvc에서 https에서 http 모드로 빠져 나가는 방법
답변
당신은 기본적으로 즉, 효과적으로 {가 requireSSL] 속성의 반대를 수행하는 [DoesNotRequireSSL] 속성을 가지고있는 반대를 할 필요 당신이 경우,
public class DoesNotRequireSSL: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var request = filterContext.HttpContext.Request;
var response = filterContext.HttpContext.Response;
if (request.IsSecureConnection && !request.IsLocal)
{
string redirectUrl = request.Url.ToString().Replace("https:", "http:");
response.Redirect(redirectUrl);
}
base.OnActionExecuting(filterContext);
}
}
또한 http 프로토콜로 리디렉션 여러 페이지에 이러한 동작이 발생하도록하고 싶다면 모든 비 -http 컨트롤러가 상속 할 수있는 기본 컨트롤러를 설정할 수 있으므로 필요없는 모든 페이지에 대해 자신을 반복해야하는 것에 대해 걱정할 필요가 없습니다.
주의 : I had a similar question. 내가 배운 중요한 한 가지는 인증 쿠키가 HTTP로 다시 전환 한 후 일반 텍스트로 전송된다는 것입니다. See this.
주의 2 : 당신은 당신이 진짜 조심해야하는 은행 응용 프로그램을 작성하는 경우 지칠대로 지친 You are about to be redirected to a connection that is not secure message
을 고려하는 것을 잊지 마세요 - 또한 공공 와이파이 연결에 대한 사용자의 증가를 실현을 그 어떤 비양심적 인 프록시를 통해 깔끔하게 퍼널 될 수 있습니다. 아마 주류 사이트에 대한 훨씬 더 큰 관심사이지만 우리 모두가 알고 있어야 할 문제입니다.
도 my other question (글을 쓰는 시점에서 어떤 대답을 -하지만 난 단지 그냥 물어!)를 참조하지
난이 꽤 오래된 질문을 알고 있지만, 위에서 제시 한 많은 링크이 코드 주소 죽고
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class ForbidHttpsAttribute : FilterAttribute, IAuthorizationFilter
{
public virtual void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext.Request.IsSecureConnection)
{
HandleHttpsRequest(filterContext);
}
}
protected virtual void HandleHttpsRequest(AuthorizationContext filterContext)
{
// only redirect for GET requests, otherwise the browser might not propagate the verb and request
// body correctly.
if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("The requested resource can only be accessed *without* SSL.");
}
// redirect to HTTP version of page
var url = "http://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
The code comes from this article, 간단하게 사용자를 강제로 보안 문제의 일부에서 리디렉션에 대해 설명하십시오 System.Web.Mvc 네임 스페이스에 포함 된 RequireHttpsAttribute
에 약간의 수정을하여 ASP.NET MVC 5 그것은 HTTPS도 HTTP로.
대단히 감사드립니다. 그것은 작동합니다. –