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

Неверные формы MVC LoginUrl

У меня есть приложение ASP.NET MVC 3 с проверкой подлинности форм. По какой-то причине, я не вижу, URL-адрес перенаправления для входа /Account/Login?ReturnUrl=%2fSecure%2fAction вместо /Account/LogOn?ReturnUrl=%2fSecure%2fAction. Разница тонкая, ее использование /Account/ Login вместо /Account/ LogOn.

Мой раздел формы web.config верен. Может ли это повлиять на адрес входа в систему?

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="720" />
</authentication>
4b9b3361

Ответ 1

Это известная проблема. У меня была та же проблема с моим настраиваемым атрибутом authorize. Я нашел решение где-то в сети, не могу вспомнить, где. Просто добавьте это в appSettings в web.config

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

Примечание. Это работает с MVC 3, я не пробовал его с предыдущими версиями.

EDIT: Об этом упоминалось в примечаниях к выпуску, но похоже, что они изменили имя параметра и забыли обновить примечания к выпуску для версии RTM.

Ответ 2

Я столкнулся с подобной проблемой некоторое время назад. Через несколько месяцев я обнаружил корень проблемы: я добавил "развертываемую зависимость" на "Веб-страницы ASP.NET с синтаксисом Razor". Это добавляет ссылку на: WebMatrix.Data.dll Эта сборка имеет класс со статическим конструктором, который выполняет следующие действия:

static FormsAuthenticationSettings()
{
 FormsAuthenticationSettings.LoginUrlKey = "loginUrl";
 FormsAuthenticationSettings.DefaultLoginUrl = "~/Account/Login";
} 

Проверьте, ссылаетесь ли вы на эту DLL.

Ответ 3

Ответ на frennky помог мне добраться до этого. Мне нужно все это в моем web.config:
<appSettings>
  <add key="loginUrl" value="~/Authentication/LogOn" />
</appSettings>

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="~/Authentication/LogOn" timeout="2880"></forms>
   </authentication>
   <authorization>
     <deny users="?"/>
   </authorization>
</system.web>

Ответ 4

Чтобы устранить эту проблему, которая все еще существует в MVC 3, вам нужно удалить WebMatrix. *. dll из _bin_deployableAssemblies и bin файлов соответственно.

Ответ 5

Вместо этого:

<appSettings>
  <add key="loginUrl" value="~/Authentication/LogOn" />
</appSettings>

Вы можете использовать это:

<appSettings>
  <add key="PreserveLoginUrl" value="true" />
</appSettings>

Это сработало для меня.

Ответ 6

Исходя из редиректа, содержащегося в вашем результате действия LogOn?

Поиск вашего проекта для строки LogIn, и вы можете найти, где он указан?