Авторизуйте URL входа в asp.net MVC 3 - PullRequest
6 голосов
/ 01 октября 2011

Я работаю над приложением Asp.Net MVC 3. Я создал область администратора для веб-сайта и применил атрибут [Authorized] к методам действий после входа в систему. Когда я пытаюсь получить доступ к этим URL-адресам напрямую без входа в систему, например admin / home или admin / productlist, я перенаправляюсь в / Home / Login с ошибкой аутентификации Я хочу перенаправить на Admin / Login.

Пожалуйста, предложите. Спасибо

Ответы [ 3 ]

8 голосов
/ 12 октября 2011

Если это авторизация Stock MVC 3, то у меня, как и у многих других, были проблемы с неправильным адресом URL, установленным для действия "LogOn" ... По какой-то причине авторизация пытается отправить пользователя в аккаунт Вход в систему и просмотр представлений учетной записи показывают, что на самом деле представления «Вход» не существует, оно называется «LogOn», поэтому необходимо исправить это в файле Web.config следующим образом:

                <add key="loginUrl" value="~/Account/LogOn" />
7 голосов
/ 01 октября 2011

URL-адрес входа для приложений ASP.NET (включая приложения MVC3) контролируется в web.config, в разделе аутентификации форм:

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Home/Login" timeout="2880" />
    </authentication>
  </system.web>
</configuration>

Хитрость в том, что вам нужны два разных URL-адреса для входа. В ASP.NET есть отличная функция, благодаря которой вы можете иметь файл web.config в каждом каталоге вашего проекта, и при необходимости он будет использовать самые специфические настройки, которые он может найти, вплоть до корневого web.config. Поэтому в папке, где у вас есть представления администратора (я полагаю, «Admin»), вы сможете создать второй файл web.config, который будет применяться только к тем страницам и ниже в дереве:

<configuration>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Admin/Login" timeout="2880" />
    </authentication>
  </system.web>
</configuration>
0 голосов
/ 01 октября 2011

Вы можете переопределить свой фильтр действий Authorize для решения этих проблем. Например, вы можете проверять не только роли, но и определенные разрешения и перенаправлять их на разные URL-адреса. И также использование этого подхода может учитывать вашу конфигурацию маршрутизации.
Посмотрите на этот ответ: asp.net mvc Добавление к атрибуту AUTHORIZE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...