У нас возникли некоторые проблемы с возвратом переменных, сохраненных в сеансе, что, в свою очередь, приводит к тому, что код авторизации нашего контроллера перенаправляет некоторых пользователей обратно на страницу входа.Кажется, что пользователи имеют эту проблему только с браузером Firefox, и приложение работает для них нормально при использовании Chrome или Edge.Это похоже на то, как если бы их сеанс отбрасывался во время навигации по сайту (в основном сразу после входа в систему, когда он перенаправлен на домашнюю страницу, однако иногда пользователь может получить доступ к нескольким ссылкам до того, как его выгнали). Проблема также возникает только послеработает на наших тестовых или производственных площадках, воспроизводя проблему локально хлопотно.Мне было интересно, сталкивался ли кто-то еще с этим типом проблемы раньше и смог ли он обойти или решить ее.Наше состояние сеанса установлено на InProc.
На основе других потоков, о которых я читал здесь, я до сих пор пробовал следующее: Гарантировал, что Session_Start находится в Global.asax, Попытался установить «фиктивную» переменную сеанса в Session_StartМетод "Session [" Init "] = 1", добавил это в наш файл web.config в разделе, а также некоторые другие найденные мной решения, которые, как оказалось, не решили нашу проблему.
Эточасть кода, о которой идет речь.
public class AuthorizeSessionAttribute : AuthorizeAttribute, IAuthorizationFilter
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
HttpSessionStateBase session = filterContext.HttpContext.Session;
Controller controller = filterContext.Controller as Controller;
if (controller != null && session != null && session["CurrentRole"] == null)
{
controller.HttpContext.Response.Redirect("~/Account/Login");
}
base.OnAuthorization(filterContext);
}
}
Я просто не вижу какой-либо очевидной причины того, почему это происходит только в Firefox, но работает правильно в Chrome или IE.Любой вклад в это будет приветствоваться.Спасибо.