ASP.NET MVC 3 -Работа с переменными сеанса

У меня есть приложение, которое использует аутентификацию формы, и когда пользователь входит в систему, я получаю фактическое имя пользователя и назначаю его переменной сеанса, например так:

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            Session["Name"] = client.GetName(model.UserName);
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            return RedirectToAction("Index", "Home"); 
        }
    }
}

Затем это отображается в моем представлении Index, вот так:

<h3>Welcome, @Session["Name"]</h3>

Итак, если бы меня звали Боб, в моем представлении было бы выведено «Добро пожаловать, Боб», и это работает нормально. Но как только я ухожу со страницы или закрываю браузер и возвращаюсь через несколько минут, кажется, что эти переменные сеанса были уничтожены, поскольку он просто выводит «Добро пожаловать», но я все еще вошел в систему, поэтому мой сеанс не уничтожен? Я установил, что сеанс будет уничтожен через 60 минут в моем web.config:

<sessionState regenerateExpiredSessionId="true" timeout="60" />

Изменить

Это происходит только тогда, когда я устанавливаю флажок «Запомнить меня» при входе в систему, так как я предполагаю, что это сохраняет клиентскую часть cookie, поэтому когда я повторно-открываю свой браузер, я все еще вхожу в систему, но создается новый идентификатор сеанса, как я сделал Response.Write(Session.SessionID)на своей странице индекса, и идентификатор перед закрытием браузера отличался от того, который был при-открыл его. Если я не поставлю галочку в поле «Запомнить меня», то мне придется снова войти в систему при повторном -открытии моего браузера

7
задан CallumVass 13 April 2012 в 07:27
поделиться