Как настроить проверку подлинности на основе форм ASP.net, чтобы запретить только определенный URL-адрес и вложенные URL-адреса? - PullRequest
1 голос
/ 07 мая 2011

Я использую ASP.NET4 с MVC3. Я хотел бы настроить свой веб-сайт для использования проверки подлинности с помощью форм следующим образом:

  • Неаутентифицированные пользователи должны иметь доступ ко всему (т.е. /, / home, / freebies) ...
  • ... за исключением всего, что находится в / paidServices (т.е. / paidServices / fancy, / paidServices)

Как мне настроить это в моем файле web.config? Моя текущая конфигурация всегда переходит на страницу входа, когда пользователь нажимает на корневой URL (/), но это не должно. Он должен переходить на страницу входа, только если пользователь пытается получить доступ к URL-адресу / paidServices.

Моя конфигурация следующая:

<configuration>
    <system.web>
        <authentication mode="Forms">
          <forms loginUrl="~/Account/LogOn" path="/" timeout="2880" />
        </authentication>
        <authorization>
          <allow users="*"/>
        </authorization>
    </system.web>

    <location path="~/paidServices">
        <system.web>
            <authorization>
                <deny users="?"/>
            </authorization>
        </system.web>
    </location>

    ... etc ...
</configuration>

Что я делаю не так? Тот факт, что я использую ASP.NET MVC, делает это более сложным?

Ответы [ 2 ]

2 голосов
/ 07 мая 2011

Лучше использовать атрибуты Authorize в MVC.Они могут применяться ко всему контроллеру или только к одному действию контроллера.

Например:

[Authorize]
public class paidServicesController
{
 ....
1 голос
/ 07 мая 2011

Ложная тревога. Конфигурация вопроса была правильной. В конфигурации маршрутов MVC я пропустил URL-адрес, поэтому URL-адрес по умолчанию (/) направлялся в защищенный раздел, а форма входа отображалась, как и ожидалось.

Отладчик маршрута Фила Хаака помог выявить проблему: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

...