У меня есть коллега, который сделал веб-сайт в формате обычного HTML с небольшим количеством CSS и JavaScript.У меня есть специальная задача, чтобы предотвратить эту страницу с помощью простой формы входа.Мой коллега будет постоянно работать над своим html, но ему не разрешается писать какие-либо asp.net или публиковать контент на удаленных серверах.
Я разработчик asp.net, и моей первой идеей было включить все егосодержимое внутри папки проекта веб-приложения с именем «Содержимое».Затем я сделал простую форму входа (login.aspx), а внутри web.config я поместил аутентификацию (с login.aspx в качестве loginUrl) и теги авторизации.После этого я опубликовал весь проект на удаленном сервере и собираюсь поделиться папкой «Содержимое» с этим пользователем.У него будет доступ ко всем html-страницам, и он сможет непрерывно работать над ним, просто копируя свои обновленные или вновь созданные html-файлы в эту папку.
Все, что касается авторизации и аутентификации, прекрасно работает, когда я запускаюэто локально на сервере веб-разработки Visual Studio.Когда я пытаюсь получить доступ к некоторому html-контенту, хранящемуся в папке «Content», я перенаправляюсь на login.apsx, и все работает как положено.
У меня проблема при публикации этого полного веб-приложения asp.netна удаленный сервер.Когда я пытаюсь получить доступ к тому же html-контенту, меня не перенаправляют на login.aspx, и я могу получить доступ ко всем html-страницам внутри «Content» без аутентификации.
Это часть аутентификации и авторизации моего web.config:
<authentication mode="Forms">
<forms loginUrl="login.aspx"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
И это содержание моего login.aspx.cs:
if (//USER WEB SERVICE CHECK)
{
if (Request.QueryString["ReturnUrl"] == null)
{
FormsAuthentication.SetAuthCookie(UserName.Text, true);
Response.Redirect("~/Content/index.html");
}
else
{
FormsAuthentication.RedirectFromLoginPage(UserName.Text, true);
}
}
else
{
FailureText.Text = "Wrong username or password...";
}
}
У вас есть идея, как это сделать с помощью asp.net?Почему эта форма проверки подлинности не работает, когда я публикую ее?Можно ли предотвратить доступ к простому html-контенту как части веб-приложения, когда все это публикуется?
Я постоянно использую один и тот же принцип в моих проектах asp.net, и он отлично работает на том же удаленном сервере.,Я даже пытался поместить это на другой сервер, но у меня такой же эффект.
Структура моего проекта веб-приложения следующая:
ApplicationFolder
|
- login.aspx
|
- web.config
|
- CONTENT
|
- index.html
- ...
Кроме того, я попытался поместить некоторый aspx-контент в папку CONTENT, и перенаправление аутентификации работает просто отлично.Можно ли даже использовать проверку подлинности на основе форм для защиты содержимого html внутри веб-приложения?
Удаленный сервер использует IIS 6, а среда выполнения ASP.NET не обрабатывает файлы html, и из-за этого проверка подлинности на основе форм не работает.Я переименовал расширение файла html в aspx, и все работает отлично.Я удовлетворен этим решением на данный момент, но если у кого-то есть лучшее решение, пожалуйста, напишите его здесь ...
Я читал, что есть обходной путь с настройкой веб-сайта на IIS 6 (http://forums.asp.net/t/1184547.aspx),, но ямне не разрешено это делать на моем сервере.