asp.net 응용 프로그램을 mvc3으로 변환 중입니다. 내가 https가 필요한 페이지에 로그인이 있고 다른 모든 페이지에만 http가 필요하다는 것을 말하면 어떻게 https로 로그인을 리디렉션하고 http의 다른 모든 페이지도 유지할 수 있습니까?mvc3 https & http
어떤 제안이 좋을까요?
asp.net 응용 프로그램을 mvc3으로 변환 중입니다. 내가 https가 필요한 페이지에 로그인이 있고 다른 모든 페이지에만 http가 필요하다는 것을 말하면 어떻게 https로 로그인을 리디렉션하고 http의 다른 모든 페이지도 유지할 수 있습니까?mvc3 https & http
어떤 제안이 좋을까요?
RequireHttpsAttribute
클래스가 원하는 것일 수 있습니다. 당신이 그것을 터치하지 않아도 원인 1 :
[RequireHttps]
public ActionResult SignIn() {
return View();
}
문제는 모든 요청에 로그인 한 후에 당신이 있기 때문에
나는이 솔루션을 같이하지 않으려는 경우에도 HTTPS를 할 예정이다 다시 VS에서. 데코레이터 자체만으로는 브라우저가 디버그 상태에서도 https로 사이트를 렌더링합니다.
당신은 기본 컨트롤러로 구현하고 모든 컨트롤러는 더 "말하자면"않습니다 뒷면에 미끄럼이없는 알고, 해당 컨트롤러에서 상속하는 경우.
#if !DEBUG
#define RELEASE
#endif namespace ProjectName.UI.Controllers {
using System.Web.Mvc;
#if RELEASE
[RequireHttps]
#endif
public abstract partial class ProjectNameBaseController : Controller
{
}
}
지뢰의 동료와 나는이 쳐다 보면서 우리가 좋은 해결책을 찾을 생각합니다. 이것은 RequireHttpsAttribute을 확장하여 작동
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class HttpsRequiredAttribute : RequireHttpsAttribute
{
protected override void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
// Check to see if we're secure
string requirestr = ConfigurationManager.AppSettings["RequireHttps"];
bool require;
if (bool.TryParse(requirestr, out require) && require)
base.HandleNonHttpsRequest(filterContext);
}
}
하고 AttributeTargets로 표시된 바와 같이, 클래스 나 메소드에 적용 할 수 있습니다 : 여기에 우리가 해낸 것입니다. 그런 다음 RequireHttpsAttribute에서 가상 함수를 재정의했습니다. 메서드가 수행하는 작업은 Web.config 파일에서 "RequireHttps"라는 키를 확인하는 것입니다. 찾을 수 없거나 유효하지 않은 bool 값 (bool.tryse가 확인하는 값)이면 Https가 필요하지 않습니다. 값이 참이면 HTTPS가 필요합니다.
이 확장을 사용하는 경우, 당신이 너무 좋아 ", RequireHttps"라는의 Web.config에 키를 추가해야합니다 : 이 <add key="RequireHttps" value="true"/>
그런 다음 때를 위해이 변수를 변경하여 HTTPS의 요구 사항을 해제 할 수 있습니다 디버깅을하거나 Web.config 파일을 변경하여 사이트가 배포 된 곳마다 요구 사항을 충족시킬 수 있습니다.
멋진 감사 Bertrand! mvc는 삶을 편하게 만듭니다. –
로그인 한 후 질문에 따라 http를 사용하여 명시 적으로 다음 페이지로 리디렉션해야합니다. 이렇게하면 https에 전체 시간을 걸리지 않습니다. – Jab
@jab은 http를 사용하여 명시 적으로 다음 페이지로 리디렉션합니까? RedirectToAction()을 사용하여 가능합니까? – pramodtech