2017-02-22 40 views
1

Задача: Любой пользователь может получить доступ к веб-странице, но я хочу, чтобы у пользователей было только право доступа к нему..ASPX: Как ограничить доступ к Интернету только для входа в систему?


фон:

  • Веб-сервер IIS = 8
  • OS Server = Windows Server 2012
  • Framework = .NET 4.5
  • Environment = \ WebFolder \ входе в систему.. aspx,. \ WebFolder \ inside.html
  • Сайт = Простая страница входа в систему («logon.aspx»), которая защищает n html-страница ("inside.html").
  • Пользователи = Внешние люди (т.е. не интранет)

Примеры URL-адресов:

A. "www.webpage.com/logon.aspx" 
    B. "www.webpage.com/inside.html" 

Желаемый результат:
Каждый может получить доступ к "logon.aspx" страницы
Только зарегистрированные на пользователи могут получить доступ к странице «inside.html»
Любые прямые попытки доступа к «B» вызовут перенаправление на «A»
Дополнительное использование программного кода

Предшествующие попытки: Я возился с файлом web.config (аутентификации & авторизации), но безрезультатно (501 Ошибка сервера 401 Authorization Error, ошибка во время выполнения приложения).


Web.Config Файл:
<system.web>
<authentication>
<forms name=".ASPXFORMSAUTH" loginUrl="logon.aspx" protection="All" timeout="1" path="/" slidingExpiration="true" requireSSL="false" />
</authentication>
<authorization></authorization>
</system.web>


Подводя итог: Я уверен, что это очень простая/простая задача для настройки, я просто не могу это сделать. Кроме того, я не хочу писать дополнительный код для выполнения, казалось бы, фундаментальной задачи.

Заранее благодарен!

+0

Можете ли вы попробовать переименовать свою страницу logon.aspx для входа в систему.aspx? Или, наоборот, добавьте новый узел форм в узел аутентификации в файле web.config, например: . Не могли бы вы разместить соответствующий образец вашего файла web.config? – SeanOB

+0

@SeanOB: Новая попытка: Изменен «logon.aspx» на «login.aspx». Результат = Сбой (без изменений). Пожалуйста, проверьте выше для нового раздела «web.config». Благодарю. – Elias

+1

Думаю, вам нужно использовать поставщика членства или какую-то такую ​​вещь. Основная идея заключалась бы в том, чтобы отмечать пользователей, которые вошли в систему, или нет. Простой реализацией будет проверка способа загрузки страницы (предположительно, при правильных появлениях обратной связи): 'If Not IsLoggedIn() Then Response.Redirect (" somepage.aspx ") End If' –

ответ

0

Хорошо, я понял (через 7 часов). Она требует четыре вещи (на примере структуры файла):


1.Использование FormsAuthentication модуля

VS2012 → Project → Учетные данные/код аутентификации → Используйте FormsAuthentication.RedirectFromLogin(_var1_, _var2_) вместо Response.Redirect(inside.html)


2. Добавление нового узла в файле web.config

<system.webServer><handlers><add name="HTMLHandler" type="System.Web.StaticFileHandler" path="*.html" verb="GET" /></handlers> 


3. Включение атрибута 'defaultUrl' в Forms теге

<forms name=".ASPXFORMSAUTH" loginUrl="logon.aspx" defaultUrl="inside.html" protection="All" timeout="1" path="/" slidingExpiration="false" requireSSL="false" /> 


4. Добавление местоположения ограничение авторизации тег в 'web.config' файл

<location path="inside.html"><system.web><authorization><deny users="?" /></authorization></system.web></location> 

См. Мои комментарии (ниже) для объяснения каждой из этих четырех частей.

+0

# 1. Вам нужно использовать объект FormsAuthentication, поскольку он передает учетные данные серверу. Это важно, потому что сервер (а не приложение) управляет страницей .html. Команда Response.Redirect не может этого сделать. – Elias

+0

# 2. Вы должны добавить HTMLHandler в файл 'web.config', потому что он сообщает IIS дать вашему .net-приложению управление связью страницы .html. Это имеет решающее значение (поскольку шаг №4 не будет работать без него). – Elias

+0

# 3. Важно добавить атрибут 'defaultUrl' в тег' forms', чтобы FormsAuthentication.RedirectFromLogin всегда приходил к вашему месту назначения («inside.html»). Когда переменная 'ReturnUrl' не указана, команда RedirectFromLogin перейдет к этому' DefaultUrl'. Значение 'loginUrl' на шаге 2 становится значением' ReturnUrl' при неудачной аутентификации. – Elias