Я использую MVC 3 и FormsAuthentication:
<authentication mode="Forms">
<forms loginUrl="~/Account/" timeout="2880" />
</authentication>
Моя учетная запись / индексная страница отображает страницу входа в систему, а затем с помощью Jquery делает запись в учетную запись / вход в систему для аутентификации пользователя. Вот мое действие AccountController, которое его обрабатывает:
[HttpPost]
[Authorize(Users = "*")]
public ActionResult Login(string userName, string password) {
...
}
И Jquery, который отправляет на него:
$.post("/account/login", {
"userName": $("#userName").val(),
"password": $("#password").val()
}, function (data) {
...});
Все вышеперечисленное работает, но теперь я хочу ограничить общий доступ к сайту, поэтому я добавил это в свой корневой web.config:
<authorization>
<deny users="?" />
</authorization>
И в попытке разрешить доступ к контроллеру аккаунта я добавил это:
<location path="~/Account">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Вот моя проблема . Я могу просмотреть страницу входа (Учетная запись / Индекс), но не могу войти в Учетную запись / Вход. Когда я наблюдаю, что происходит через Fiddler, я получаю этот текст, возвращаемый с сервера при публикации на этой странице:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Account/?ReturnUrl=%2faccount%2flogin">here</a>.</h2>
</body></html>
Кажется, что когда я добавляю "~ / Account" в полный список авторизованных пользователей, это на самом деле не работает, как это было бы в не-MVC проекте. Есть ли особый способ сделать это в MVC 3?