Cómo autenticar una aplicación MVC usando Web API
Haremos los cambios necesarios en el proyecto API y luego cambiaremos al cliente de actualización del proyecto web.
Paso 1: Necesitamos una base de datos
Antes de eso, necesitamos crear una base de datos. En este ejemplo usaremos SQL Server Express, que puedes descargar aquí si aún no lo tienes instalado. Una vez completada la instalación, cree una base de datos denominada CallingWebApiFromMvc. Este es el primer paso.
El proyecto Api también necesita una cadena de conexión a la base de datos; de lo contrario, nos quedaremos estancados. Inserte el siguiente código en el archivo Web.config del proyecto Api:
El marco de identidad crea automáticamente las tablas de membresía que necesitamos para administrar usuarios, por lo que no es necesario preocuparse por crear estas tablas con anticipación.
Paso 2: Agregar paquetes Nuget relevantes
A continuación, agregamos paquetes Nuget para OWIN y autenticación de Windows.
Al usar estos paquetes, puede iniciar una PROPIA aplicación dentro de nuestra aplicación y usar EntityFramework para guardar nuestros usuarios en SQL Server.
Paso 3: Agregar clases de identidad para administrar usuarios
Utilizaremos Entity Framework basado en el mecanismo de autenticación de Windows para administrar las operaciones relacionadas con la base de datos. Primero, necesitamos agregar algunas clases para su procesamiento. Agregue un directorio de identidad al proyecto Api como espacio de nombres para las clases que queremos agregar. Luego agregue la siguiente clase:
clase pública ApplicationUser : IdentityUser
{
}
clase pública ApplicationDbContext : IdentityDbContext< ;ApplicationUser>< / p>
{ public ApplicationDbContext(): base("ApiFromMvcConnection") {}
public static ApplicationDbContext Create()
{ return new ApplicationDbContext();
}
}
Tenga en cuenta que el parámetro ApiFromMvcConnection que pasamos al constructor de la clase base es coherente con el nombre de la cadena de conexión en el archivo de configuración de Web.NET.
Tenga en cuenta que el parámetro ApiFromMvcConnection que pasamos al constructor de la clase base coincide con el nombre en la cadena de conexión en Web.config.
clase pública ApplicationUserManager: UserManager
{ público ApplicationUserManager(IUserStore
{
} público estático ApplicationUserManager Create(IdentityFactoryOptions
{ var manager = new ApplicationUserManager(new UserStore
// Configurar la lógica de verificación del nombre de usuario
manager.UserValidator = new UserValidator
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
// Configurar la lógica de verificación de contraseña
manager.PasswordValidator = new PasswordValidator
{
RequiredLength = 6,
RequireNonLetterOrDigit = verdadero,
RequireDigit = verdadero,
RequireLowercase = verdadero,
RequireUppercase = true,
}; var dataProtectionProvider = opciones.DataProtectionProvider;
if (dataProtectionProvider ! = null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider
} administrador de retorno;
}
}
Paso 4: Agregar la clase de inicio OWIN
Para que nuestra aplicación se ejecute como un servidor OWIN, debemos inicializarla cuando se inicia la aplicación. Esto lo podemos lograr iniciando la clase. Decoraremos la propiedad
OwinStartup de esta clase para que se active cuando se inicie la aplicación. Esto también significa que podemos eliminar Global.asax y mover su
código Application_Start a nuestra nueva clase de inicio.
OwinStartup(typeof(Levelnis.Learning.CallingWebApiFromMvc.Api.Startup))]
espacio de nombres Levelnis.Learning.CallingWebApiFromMvc.Api
{
usando System;
usando System.Web.Http;
usando Identity;
usando Microsoft.Owin.Security.OAuth;
Paso 6: Registrar un nuevo usuario - Lado API
Entonces, ya tenemos todas las clases de identidad para administrar usuarios. Veamos cómo RegisterController guarda nuevos usuarios en la base de datos. Acepta el modelo RegisterApi, que es muy simple:
public class RegisterApiModel
{
[Obligatorio]
[EmailAddress] public cadena Correo electrónico { get; set }
[Obligatorio]
[StringLength(100, ErrorMessage = "{0} debe tener al menos {2} caracteres.", Longitud mínima = 6 )]