ASP.NET MVC - HTML.BeginForm и SSL

Я встречаюсь с проблемой с тем, что должно быть простой формой входа в систему в 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. По существу я должен указать протокол в своей форме, но понятия не иметь, как сделать это, или если это возможно.

Я ценил бы любой совет/предложения.Заранее спасибо

МИРОВОЙ СУДЬЯ

12
задан Tiago 5 August 2013 в 03:35
поделиться

2 ответа

Вы можете использовать

<form action =" <%= Url.Action(
"action",
"controller",
ViewContext.RouteData.Values,
"https"
) %>" method="post" >
12
ответ дан 2 December 2019 в 06:44
поделиться

Используйте [RequireHttps] атрибут как для действия, которое создает форму, так и для действия, в которое вы отправляете сообщение.

6
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: