Управление сессиями в MVC

Я новичок в MVC. Я создаю новое веб-приложение в MVC4 Razor. Я хочу поддерживать сеанс входа пользователя для всех страниц. Может ли кто-нибудь объяснить мне, как поддерживать сеанс для всех представлений в MVC с небольшим примером.


person SanketS    schedule 04.10.2013    source источник
comment
Вы хотите, чтобы на всех страницах отображался логин пользователя?   -  person Andrei    schedule 04.10.2013


Ответы (3)


Управление сеансом простое. Объект сеанса доступен внутри контроллера MVC и в HttpContext.Current.Session. Это один и тот же объект. Вот базовый пример использования Session:

Напишите

Session["Key"] = new User("Login"); //Save session value

Читать

user = Session["Key"] as User; //Get value from session

Отвечая на ваш вопрос

if (Session["Key"] == null){
   RedirectToAction("Login");
}

Ознакомьтесь с Аутентификация с помощью форм, чтобы внедрить высоконадежную модель аутентификации.


ОБНОВЛЕНИЕ. Для более новых версий ASP.NET MVC следует использовать ASP.NET Identity Framework. Ознакомьтесь с этой статьей.

person Andrei    schedule 04.10.2013
comment
как я могу проверить этот сеанс для каждого просмотра. если сеанс не существует, как перенаправить на форму входа. - person SanketS; 04.10.2013
comment
@SanketS: загляните в SimpleMembership, он сделает все это за вас (и предложит удобство использования атрибута [Authorize]). - person Brad Christie; 04.10.2013

Вот пример. Скажем, мы хотим управлять сеансом после проверки проверки пользователя, поэтому только для этой демонстрации я жестко проверяю действительного пользователя. В аккаунте Войти

public ActionResult Login(LoginModel model)
        {
            if(model.UserName=="xyz" && model.Password=="xyz")
            {
                Session["uname"] = model.UserName;
                Session.Timeout = 10;
                return RedirectToAction("Index");
            }
}

На индексной странице

public ActionResult Index()
        {
            if(Session["uname"]==null)
            {
                return Redirect("~/Account/Login");
            }
            else
            {
                return Content("Welcome " + Session["uname"]);
            }
        }

Кнопка «При выходе»

Session.Remove("uname");
return Redirect("~/Account/Login");
person Vedprakash_Comp    schedule 30.12.2014

Вы работали над приложением Asp.Net? Используя проверку подлинности с помощью форм, вы можете легко поддерживать сеанс пользователя.

Найдите приведенные ниже ссылки для справки: http://www.codeproject.com/Articles/578374/AplusBeginner-27splusTutorialplusonplusCustomplusF http://msdn.microsoft.com/en-us/library/ff398049(v=vs.100).aspx

person Mak    schedule 04.10.2013