¡Hola de nuevo! En esta ocasión quiero hablarles de un tema bastante interesante y que puede ser confuso en primera instancia, las amadas y odiadas cookies, y como podemos utilizarlas sin Core Identity.

 

.NET Core provee las “cookie middleware” el cual serializa el usuario en una cookie encriptada y de esta manera en los siguientes request(solicitudes) solo se valida las cookies y se mantiene la sesión, el valor del Usuario que es almacenado en las cookies a su vez se asigna en HttpContext. 

 

Si quieres sacarle la ventaja a esto, debes agregar a tu proyecto el paquete NuGet Microsoft.AspNeTCore.Authentication.Cookies y la configuración inicial en el método configure de tu clase Startup.

 

La siguiente tabla muestra descripción de las algunas de las propiedades que puedes utilizar con CookieAuthenticationOptions: 

Propiedad  Descripción
AuthenticationScheme Nombre del middleware.
LoginPath Ruta relativa a la página del login, a la cual se redirige cuando un usuario sin autenticar lo accesar.
AcessDeniedPath Ruta relativa a la página que muestra el usuario no tiene los permisos para acceder a un recurso.
CookieDomain Determina el dominio utilizado para crear la cookie.
ExpireTimeSpan Indica el tiempo de expiración de la Cookie.

 

Las cookies pueden ser creadas llamando al método SignInAsync del AuthenticationManager. A continuación, mostraré un método (HTTP POST) que será invocado cuando el usuario se intente loguear en la aplicación.

 

 

Aquí podemos ver varias cosas: 

 

  1. Estamos haciendo uso de claims, especificando los key values pair, que fueron agregados a la lista.
  2. Estamos seteando algunas de las propiedades de nuestra autenticación y las cookies como el tiempo de expiración.
  3. Una vez autenticamos a los usuarios, procedemos a autorizarlos para redireccionarlos a las páginas que tienen acceso según su rol definido.
  4. También estamos manejando los errores que pueden darse en el proceso de iniciar sesión de un usuario.

 

SignInAsync utiliza las notificaciones que se transmiten a través de la “identity claims ” y establece la cookie.

Las propiedades de Claims se pueden invocar llamando a User.Claims, de la siguiente manera:

 

Por último, si deseas realizar el SignOut esta es la forma en la que puedes hacerlo:

 

————

Espero que este articulo te haya sido útil, si te ha gustado no olvides comentar, manita arriba y compartir.  💛 💚 💙 💜

Referencias:

ASP.NET Core Middleware | Microsoft Docs

Versión en Inglés:

https://medium.com/@ilessrg/using-cookie-middleware-without-asp-net-core-identity-ac8f089b133a