Я встречаюсь с проблемой с тем, что должно быть простой формой входа в систему в ASP.NET MVC 2. По существу моя форма смотрит немного что-то вроде этого:
using (Html.BeginForm("LogOn", "Account", new { area = "Buyers" }, FormMethod.Post, new { ID = "buyersLogOnForm" }))
Я сделал, чтобы RequiresHTTPS отфильтровал на Методе действия LogOn, но когда он выполняется, я получаю следующее сообщение
К требуемому ресурсу можно только получить доступ через SSL
В этой точке единственное решение, которое работало, состояло в том, чтобы передать в дополнительном действии htmlattribute следующим образом:
var actionURL = "https://" + Request.Url.Host + Request.Url.PathAndQuery;
using (Html.BeginForm("LogOn", "Account", new { area = "Buyers" }, FormMethod.Post, new { ID = "buyersLogOnForm", @action = actionURL }))
В то время как это работает, интересно a) почему я вижу эту проблему во-первых и b) если существует более простой способ отправить на https от http страницы?
[Править]
Я должен был заявить, что выпадающий вход в систему будет доступен на многих общедоступных страницах. Я не хочу, чтобы всеми моими страницами был HTTPS. Например, моей страницей надежды - который ЛЮБОЙ видит - не должен быть базирующийся HTTPS. По существу я должен указать протокол в своей форме, но понятия не иметь, как сделать это, или если это возможно.
Я ценил бы любой совет/предложения.Заранее спасибо
МИРОВОЙ СУДЬЯ
Вы можете использовать
<form action =" <%= Url.Action(
"action",
"controller",
ViewContext.RouteData.Values,
"https"
) %>" method="post" >
Используйте [RequireHttps]
атрибут как для действия, которое создает форму, так и для действия, в которое вы отправляете сообщение.