net mvc create crear cookie codeproject asp c# asp.net-mvc-4 cookies action httpcookie

c# - create - Usando Cookie en Asp.Net Mvc 4



create cookie c# (3)

Estamos utilizando Response.SetCookie () para actualizar las cookies antiguas y Response.Cookies.Add () para agregar las nuevas cookies. A continuación, el código CompanyId se actualiza en la cookie antigua [OldCookieName].

HttpCookie cookie = Request.Cookies["OldCookieName"];//Get the existing cookie by cookie name. cookie.Values["CompanyID"] = Convert.ToString(CompanyId); Response.SetCookie(cookie); //SetCookie() is used for update the cookie. Response.Cookies.Add(cookie); //The Cookie.Add() used for Add the cookie.

Tengo una aplicación web en Asp.Net MVC4 y quiero usar cookies para el inicio de sesión y el cierre de sesión del usuario. Entonces mis acciones son las siguientes:

Iniciar sesión

[HttpPost] public ActionResult Login(string username, string pass) { if (ModelState.IsValid) { var newUser = _userRepository.GetUserByNameAndPassword(username, pass); if (newUser != null) { var json = JsonConvert.SerializeObject(newUser); var userCookie = new HttpCookie("user", json); userCookie.Expires.AddDays(365); HttpContext.Response.Cookies.Add(userCookie); return RedirectToActionPermanent("Index"); } } return View("UserLog"); }

Acción de LogOut

public ActionResult UserOut() { if (Request.Cookies["user"] != null) { var user = new HttpCookie("user") { Expires = DateTime.Now.AddDays(-1), Value = null }; Response.Cookies.Add(user); } return RedirectToActionPermanent("UserLog"); }

Y uso esta cookie en _Loyout de la siguiente manera:

@using EShop.Core @using Newtonsoft.Json @{ var userInCookie = Request.Cookies["user"]; } ... @if (userInCookie != null && userInCookie.Value) { <li><a href="#">Salam</a></li> <li><a href="@Url.Action("UserOut", "Home")">Cıxış</a></li> } else { <li><a href="@Url.Action("UserLog", "Home")">Giriş</a></li> }

Pero cuando hago clic en la acción * UserOut *, esta acción ocurre por primera vez, pero luego no funciona. Puse breakpoint para buscar el proceso pero obtiene la acción UserLog no UserOut . Mi pregunta es: ¿dónde uso la forma incorrecta de cookie? ¿Cuál es la mejor forma de usar cookies en Asp.Net Mvc4 para este escenario?


Intente utilizar Response.SetCookie() , porque Response.Cookies.Add() puede hacer que se agreguen varias cookies, mientras que SetCookie actualizará una cookie existente.


userCookie.Expires.AddDays(365);

Esta línea de código no hace nada. Es el equivalente de:

DateTime temp = userCookie.Expires.AddDays(365); //do nothing with temp

Probablemente quieras

userCookie.Expires = DateTime.Now.AddDays(365);