Частичное использование SSL сайта asp.net контроль входа в систему
Вопрос
Я пытаюсь преобразовать домашнюю систему входа в систему в стандартную asp.net элемент управления входом, включенный в .net.Я хочу, чтобы все сообщения на веб-сайте для пользователя, не вошедшего в систему, были в виде открытого текста, но заблокируйте все в SSL после входа пользователя в систему, включая передачу имени пользователя и пароля.
У меня это работало раньше, загрузив вторую страницу - "loginaction.aspx" - с https:префикс, затем извлекаем имя пользователя и пароль, ища соответствующие элементы управления текстовым полем в Request.Form.Keys.Есть ли способ сделать что-то подобное, используя элементы управления входом в .net?Я не хочу иметь отдельную страницу входа в систему, а скорее включаю этот элемент управления (в loginview) на каждой странице сайта.
Решение
Вы не сможете просто сделать то, о чем говорите, потому что обратная передача (это то, что использует элемент управления входом) будет зависеть от уровня безопасности страницы (SSL или не-SSL).
Ваш лучший выбор в этом сценарии - использовать IFRAME, который содержит страницу HTTPS (SSL), которая просто содержит элемент управления login.Возможно, вам придется перенаправить на другую страницу после входа в систему, которая позволит вам выйти из IFRAME.
План Б состоял бы в том, чтобы иметь отдельную форму на странице (вне вашей основной ФОРМЫ), свойство ACTION которой указывает на другую страницу, где вы обрабатываете вход в систему.Вам нужно будет ввести свой собственный код входа в систему, чтобы обработать аутентификацию в формах.
Другие советы
Я смог добиться этого, добавив событие OnClientClick к элементу управления кнопкой входа в систему и установив для него следующую функцию javascript.
`
function forceSSLSubmit()
{
var strAction = document.forms[0].action.toString();
if (strAction.toLowerCase().indexOf("http:") == 0) {
strAction = "https" + strAction.substring(4);
document.forms[0].action = strAction;
}
}
`
Вы не сможете использовать свой сайт как не-SSL, с полем входа на каждой странице, а затем вводить имя пользователя и пароль через SSL.
Единственный способ действительно добиться этого - использовать какие-то фреймы.Таким образом, вся ваша страница может быть не-SSL, но фрейм входа в систему должен быть SSL.
Обычные способы сделать это - либо заблокировать весь сайт с помощью SSL, не беспокоиться о том, что имя пользователя и пароль зашифрованы SSL, и перейти к SSL после входа в систему, либо пройти фреймовый маршрут, о котором я упоминал выше.