Я использую MVC4, ASP.NET 4.5, C#Как перехватить соединение без SSL в методе onAuthorization?
Я хочу, чтобы добавить код к моему методу onAuthorization в global.asa, чтобы определить соединение является ли SSL или нет, если нет, то выдать постоянный редирект на Домен SSL. Я использую другой домен, который является SSLed.
В моей Вход контроллера У меня есть код вдоль линий:
[HttpGet]
public virtual ActionResult LogOn(string Error="")
{
if (Request.IsSecureConnection)
{
return View(viewModel);
}
else
{
return RedirectPermanent("https://www.mysslapp.com/logon");
}
}
Я хочу, чтобы добавить такую же функциональность метода onAuthorization так, что, когда действия, подпадающие под действие [авторизовать] фильтр называют то они также должен быть доступен через SSL-соединение. Поэтому я считаю, что мой код global.asa нуждается в изменении. Однако он не принимает «Request.IsSecureConnection», поскольку контекст отличается.
Мой «псевдо» Global.asa onAuthorization рутина:
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (Request.IsSecureConnection)
{
base.OnAuthorization(filterContext);
}
else
{
RedirectPermanent("https://www.mysslapp.com/logon");
}
}
выше не будет работать, но он описывает то, что я пытаюсь достичь. Я был бы признателен за помощь в том, как мне нужно изменить вышеприведенный код, чтобы он работал, чтобы любое «приключенческое» использование URL-адресов на подключении без SSL автоматически перенаправлялось на страницу входа в сайт SSL.
Заранее спасибо.
EDIT1
думаю, что я первый бит:
filterContext.HttpContext.Request.IsSecureConnection
EDIT2
if (filterContext.HttpContext.Request.IsSecureConnection)
{
base.OnAuthorization(filterContext);
}
else
{
filterContext.Result = new RedirectResult("https://www.mysslapp.com");
}
Ваш случай использования немного запутан. SSL - это не то же самое, что и IsAuthenticated. Обычно вы используете 'AuthorizeAttribute', чтобы определить, зарегистрирован ли пользователь (и в правильной роли), а если нет, отклоните запрос. Обычно, когда вы хотите перенаправить с «HTTP» на «HTTPS», вы используете тот же путь, который запросил пользователь. Затем, если пользователю необходимо войти в систему, 'AuthorizeAttribute' отклонит запрос, а MVC добавит' returnUrl' к строке запроса, поэтому, когда пользователь войдет в систему, они перейдут к адресу, который они запросили. Что именно вы пытаетесь достичь здесь? – NightOwl888
Спасибо за ответ. Я решил использовать совершенно отдельный домен для SSL, поскольку я использую Cloudflare, для SSL и других функций безопасности. Кроме того, я хочу, чтобы старый домен non ssl продолжал маршрутизацию на страницы продаж не для приложений. Приложение, используемое для использования app.nonssl.com. Поэтому я хочу перенаправить на «mysslapp.com», если соединение не ssl, то есть, если они придут на мой сайт через «app.nonssl.com». Я не хочу делать это только на странице входа в систему, мне нужно предотвратить доступ к ssl без каких-либо действий, и мне показалось, что использование кода в методе onAuthorization может сделать трюк. – SamJolly
С тех пор я добавил код, и он работает, как и EDIT2. Хотя я не уверен, как сделать постоянную переадресацию. – SamJolly