Cómo implementar la autenticación de cookies en ASP.NET Core

Estrada Web Group
jiestrada

En este artículo, aprenderás a implementar la autenticación de cookies en ASP.NET Core sin utilizar la identidad. Intentaré cubrir cada paso para que los principiantes puedan entenderlo fácilmente.

Autenticación

Este artículo es parte de la serie de aprendizaje donde estoy desarrollando el Sistema de Inventarios con ASP.NET Core. Si eres nuevo en ASP.NET Core, te recomiendo que consulte los videos anteriores de esta serie,

La autenticación es el proceso de verificar la identidad del usuario. En este artículo, autenticaremos al usuario verificando las credenciales del usuario.

Implementemos la autenticación de cookies en ASP.NET Core paso a paso

Abre el proyecto del sistema de inventarios en el Visual Studio

Como hemos creado el proyecto del Sistema de Inventarios, debes abrir el archivo Program.cs y asegúrate que exista el código siguiente, de lo contrario agrégalo:

builder.Services.AddControllersWithViews();

Posteriormente, crea un servicio de middleware de autenticación con el método AddAuthentication y AddCookie. El esquema de autenticación pasado a AddAuthentication establece el esquema de autenticación predeterminado para la aplicación. CookieAuthenticationDefaults.AuthenticationScheme proporciona "Cookies" para el esquema. En el método de extensión AddCookie, debes establecer la propiedad LoginPath de CookieAuthenticationOptions en "/cuenta/inicio de sesión". La clase CookieAuthenticationOptions se usa para configurar las opciones del proveedor de autenticación.

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                    .AddCookie(options =>
                    {
                        // Specify where to redirect un-authenticated users
                        options.LoginPath = "/login";

                        // Specify the name of the auth cookie.
                        // ASP.NET picks a dumb name by default.
                        options.Cookie.Name = "inventcookie";
                    });

Por último, en el archivo Program.cs agregas UseAuthentication y UseAuthorization, como se muestra a continuación:

app.UseAuthentication();
app.UseAuthorization();

Ahora agrega el atributo Authorize en los controles que quieras proteger con autenticación, como se muestra a continuación en el HomeController

using EstradaWebGroup.SysInventarios.Web.Context;
using EstradaWebGroup.SysInventarios.Web.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;

namespace EstradaWebGroup.SysInventarios.Web.Controllers
{
    [Authorize]
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        protected readonly InventariosDbContext dbContext;

        public HomeController(ILogger<HomeController> logger, InventariosDbContext _dbContext)
        {
            _logger = logger;
            dbContext= _dbContext;
        }

        public IActionResult Index()
        {
            int totReg = dbContext.Usuarios.Count();
            return View();
        }

        public IActionResult Privacy()
        {
            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

Código completo de Program.cs

using EstradaWebGroup.SysInventarios.Web.Context;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();
ConfigurationManager configuration = builder.Configuration;

var cnn = configuration.GetConnectionString("invdbconn");
builder.Services.AddDbContext<InventariosDbContext>(options => options.UseSqlServer(cnn));

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                    .AddCookie(options =>
                    {
                        // Specify where to redirect un-authenticated users
                        options.LoginPath = "/login";

                        // Specify the name of the auth cookie.
                        // ASP.NET picks a dumb name by default.
                        options.Cookie.Name = "inventcookie";
                    });

var app = builder.Build();


// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

Con esto la aplicación redirige al Login y esta lista para implementar la autenticación.

 

Compartir artículo:

Más artículos geniales

Manténgase actualizado

Obtenga excelente contenido en su bandeja de entrada todas las semanas.
Solo contenido excelente, no compartimos su correo electrónico con terceros.
Subir al inicio de la pantalla
;