Подтвердить что ты не робот

Атрибут ASP.NET MVC Beta Authorize отправляет мне неправильное действие

Сегодня я начал играть с бета-версией MVC 3. Начав с приложения из шаблона MVC 3 по умолчанию, добавлено новое действие в Домашний контроллер следующим образом (с его представлением)

[Authorize]
public ActionResult Secured()
{
    ViewModel.Message = "This is secured area, only authenticated users should be here.";
    return View();
}

Теперь, когда я пытаюсь перейти к Защищенному действию, я получаю ошибку на 404 странице.

Вот раздел аутентификации из моего web.config.

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Если я правильно понял, атрибут Authorize должен привести к несанкционированному HTTP-ответу 401, который должен быть перехвачен обработчиком аутентификации и перенаправлен на loginUrl. Это должно привести к действию Account/LogOn.

Приложение My MVC 2 работает так, как ожидалось, и возвращает меня в действие Account/LogOn, я что-то упускаю? или Это ошибка в MVC 3 beta?

4b9b3361

Ответ 2

Он больше не работает с RTM

Вам нужно добавить

<add key="loginUrl" value="~/Account/LogOn" />

в appSettings в Web.Config

Проблемы возникают в ConfigUtil в WebMatrix.WebData​​p >

private static string GetLoginUrl()
{

    return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ?? FormsAuthenticationSettings.DefaultLoginUrl;
}



staticFormsAuthenticationSettings()
{
    LoginUrlKey = "loginUrl";
    DefaultLoginUrl = "~/Account/Login";
}

Ответ 3

После удаления WebMatrix *.dll в каталоге bin все в порядке.

Ответ 4

MVC 4 демонстрирует ту же проблему. Однако на MVC 4, если режим аутентификации правильно установлен в = "Формы" в файле конфигурации, как и в следующем, проблема исчезает:

<authentication mode ="Forms">
    <forms loginurl = "your login" timeout ="2880" slidingExpiration="true">
</authentication>

Это работает для меня. Выньте режим, и это дает вам неприятности.