Я получаю сообщение об ошибке «Страница не перенаправляется должным образом», когда мое действие выводит пользователя из системы и перенаправляет его обратно к себе. После возврата перенаправления действие вызывается снова, но Request.IsAuthenticated по-прежнему имеет значение true, а не false.
Я установил контрольные точки для каждого вызова FormsAuthentication.SetAuthCookie в моем коде, и ни один из них никогда не срабатывал (я хотел убедиться, что не было кода, который бы повторно аутентифицировал пользователя).
public ActionResult MyAction() {
if (Request.IsAuthenticated) {
try {
// Check some stuff put into the session when the user
// is authenticated
} catch {
Session.Abandon();
FormsAuthentication.SignOut();
return Redirect("http://localhost/MyController/MyAction");
}
}
}
Вполне возможно, что это проблема Firefox, так как я использую Firefox 11.0 и, похоже, он работает в Chrome. Кто-нибудь знает, почему это происходит?
Я еще не выделил это для простого проекта. Я надеялся, что это что-то простое, что мне не хватает.
Я должен также упомянуть, что у меня есть UrlRewriter, который отслеживает поступающие запросы и может перенаправлять их на URL, который может иметь отдельный файл cookie для аутентификации от основного сайта. Может ли это быть проблемой?
Ex.
// cookiePath: "/"
http://localhost/MyApp/CustomPortal/index/CustomPage
Изменяется на:
// cookiePath: "/CustomPortal"
http://localhost/MyApp/SpecialRequestController/Render?appName=CustomPortal&pagePath=public/CustomPage
Когда пользователь проходит проверку подлинности в MyApp, cookiePath имеет значение "/", но если пользователь проходит проверку подлинности по переписанному URL-адресу, cookiePath имеет значение "/CustomPortal".
Спасибо за помощь!