tutorial practices net español cookie best asp c# asp.net-mvc asp.net-core forms-authentication

c# - practices - asp.net identity tutorial español



Asp.Net Core-autenticación de formas más simple posible (2)

Tengo esta antigua aplicación MVC5 que utiliza la autenticación de formularios de la forma más sencilla posible. Solo hay una cuenta almacenada en web.config, no hay roles, etc.

<authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="30"> <credentials passwordFormat="Clear"> <user name="some-user" password="some-password" /> </credentials> </forms> </authentication>

La rutina de inicio de sesión solo llama

FormsAuthentication.Authenticate(name, password);

Y eso es. ¿Hay algo similar (en términos de simplicidad) en el núcleo de asp.net?


No es tan simple :)

  1. En el Startup.cs, configure el método.

    app.UseCookieAuthentication(options => { options.AutomaticAuthenticate = true; options.AutomaticChallenge = true; options.LoginPath = "/Home/Login"; });

  2. Agregue el atributo Autorizar para proteger los recursos que desea proteger.

    [Authorize] public IActionResult Index() { return View(); }

  3. En el Home Controller, método de acción Iniciar sesión, escriba el siguiente método.

    var username = Configuration["username"]; var password = Configuration["password"]; if (authUser.Username == username && authUser.Password == password) { var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); HttpContext.Authentication.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity)); return Redirect("~/Home/Index"); } else { ModelState.AddModelError("","Login failed. Please check Username and/or password"); }

Aquí está el repositorio de Github para su referencia: https://github.com/anuraj/CookieAuthMVCSample


Para agregar a la respuesta de Anuraj, varias clases han quedado en desuso para .Net Core 2. Para tu información:

Startup.cs - En ConfigureServices:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(o => o.LoginPath = new PathString("/account/login"));

Startup.cs - En Configurar:

app.UseAuthentication();

En su cuenta / método de control de inicio de sesión / donde quiera que esté realizando su autenticación:

var claims = new[] { new Claim(ClaimTypes.Name, "MyUserNameOrID"), new Claim(ClaimTypes.Role, "SomeRoleName") }; var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); await context.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity)); // Do your redirect here

Fuentes: https://github.com/aspnet/Announcements/issues/232

https://github.com/aspnet/Security/issues/1310