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);