Usar cookies en ASP.NET Core

  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.Cookiespropiedad, 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.Appendmé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.Appendel método
Response.Cookies.Append(somekey, somevalue);

Eliminar cookie

  • Para eliminar la cookie, puede utilizar Cookies.Deleteel método
Response.Cookies.Delete(somekey);

Utilice HttpContext

  Cómo usar la cookie ASP.NET Core, la cookie debe tener para obtener Requestel objeto, para obtener el objeto Request debe tener HttpContext, para ser HttpContextnecesario para aprovechar IHttpContextAccessorla interfaz

 public interface IHttpContextAccessor
{
    
    
	HttpContext HttpContext {
    
     get; set; }
}
  • ASP.NET Core en una implementación integrada de la HttpContextAccessorclase 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, y HttpContextesto es porque este enfoque es una dependencia fuerte, entonces todo el mundo se muestra cómo obtener la inyección de dependencia por cierto HttpContext, esto es más flexible.

  Para lograr la inyección de dependencia, necesaria IHttpContextAccessore HttpContextAccessorinyectada ServiceCollection, 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 IHttpContextAccessorinstancia de una interfaz dependiente de la inyección , y luego adquiriendo HttpContextobjetos secuencialmente , el siguiente fragmento de código muestra cómo acceder al IHttpContextAccessorejemplo 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

====

Supongo que te gusta

Origin blog.csdn.net/qq_43562262/article/details/112094968
Recomendado
Clasificación