Las cookies se utilizan a menudo para guardar una parte de los datos relacionados con el usuario y se guardan en la computadora del cliente. En la mayoría de los navegadores, cada cookie existirá en forma de un archivo pequeño, a excepción de Firefox, que guarda todas las cookies en un archivo. ellos, la cookie se expresa en forma de clave-valor, que se puede utilizar para leer, eliminar, escribir y otras operaciones
ASP.NET Core usa el mecanismo de cookies para mantener el estado de la sesión. En cada solicitud del cliente, el servidor colocará el ID de sesión en la cookie y lo enviará al cliente para implementar el seguimiento de usuarios.
Leer cookie
- Para leer la cookie, ASP.NET Core se puede usar en la
Request.Cookies
propiedad, la cookie se lee desde el objeto Request
string cookie = Request.Cookies["Key"];
- Si desea establecer un tiempo de vencimiento de las cookies, puede utilizar
Cookies.Append
métodos sobrecargados, como se muestra en el siguiente código:
CookieOptions option = new CookieOptions();
option.Expires = DateTime.Now.AddMilliseconds(10);
Response.Cookies.Append(key, value, option);
Como puede ver en el código anterior, CookieOptions se puede utilizar para configurar algunos parámetros adicionales durante el proceso de generación de cookies.
parámetro | Descripción |
---|---|
Dominio | Se utiliza para especificar el nivel de dominio asociado con la cookie. |
Tiempo de expiración | Se utiliza para especificar el tiempo de caducidad de la cookie. |
Camino | Se usa para especificar la ruta de la cookie. |
Politica de seguridad | Se usa para especificar si se puede acceder a la cookie a través de Https |
HttpOnly | Se usa para especificar si la cookie está disponible en el lado del servidor |
Escribir cookie
- Para escribir cookies, puede utilizar
Cookies.Append
el método
Response.Cookies.Append(somekey, somevalue);
Eliminar cookie
- Para eliminar la cookie, puede utilizar
Cookies.Delete
el método
Response.Cookies.Delete(somekey);
Utilice HttpContext
Cómo usar la cookie ASP.NET Core, la cookie debe tener para obtener
Request
el objeto, para obtener el objeto Request debe tenerHttpContext
, para serHttpContext
necesario para aprovecharIHttpContextAccessor
la interfaz
public interface IHttpContextAccessor
{
HttpContext HttpContext {
get; set; }
}
- ASP.NET Core en una implementación integrada de la
HttpContextAccessor
clase de interfaz
public class HttpContextAccessor : IHttpContextAccessor
{
public HttpContextAccessor();
public HttpContext HttpContext {
get; set; }
}
Algunas personas pueden preguntar, ¿por qué no usar la clase padre aquí Controller 's
Request
, yHttpContext
esto es porque este enfoque es una dependencia fuerte, entonces todo el mundo se muestra cómo obtener la inyección de dependencia por ciertoHttpContext
, esto es más flexible.
Para lograr la inyección de dependencia, necesaria
IHttpContextAccessor
eHttpContextAccessor
inyectadaServiceCollection
, los siguientes casos serán un modo de inyección única
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor,
HttpContextAccessor>();
// 逻辑代码
}
Luego se puede obtener mediante una
IHttpContextAccessor
instancia de una interfaz dependiente de la inyección , y luego adquiriendoHttpContext
objetos secuencialmente , el siguiente fragmento de código muestra cómo acceder alIHttpContextAccessor
ejemplo del controlador
public class HomeController : Controller
{
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(IHttpContextAccessor httpContextAccessor)
{
this._httpContextAccessor = httpContextAccessor;
}
// 逻辑代码
}
Escribir cookie en el controlador
- Escriba datos en la cookie en el controlador mediante el siguiente método
public IActionResult Write(string key, string value, bool isPersistent)
{
CookieOptions options = new CookieOptions();
if (isPersistent)
options.Expires = DateTime.Now.AddDays(1);
else
options.Expires = DateTime.Now.AddSeconds(10);
_httpContextAccessor.HttpContext.Response.Cookies.Append(key, value, options);
return View("WriteCookie");
}
Leer cookie en el controlador
- Una vez que la cookie se escribe correctamente, puede utilizar el siguiente método para leer la cookie
public IActionResult Read(string key)
{
ViewBag.Data = _httpContextAccessor.HttpContext.Request.Cookies[key];
return View("ReadCookie");
}
- Puede utilizar las herramientas de desarrollo del navegador si desea ver la cookie escrita y leída correctamente
====