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 :)
En el Startup.cs, configure el método.
app.UseCookieAuthentication(options => { options.AutomaticAuthenticate = true; options.AutomaticChallenge = true; options.LoginPath = "/Home/Login"; });
Agregue el atributo Autorizar para proteger los recursos que desea proteger.
[Authorize] public IActionResult Index() { return View(); }
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