Red de conocimiento informático - Material del sitio web - Cómo autenticar una aplicación MVC usando Web API

Cómo autenticar una aplicación MVC usando Web API

Primero, actualicemos el proyecto 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 tienda):

{

} público estático ApplicationUserManager Create(IdentityFactoryOptions opciones, contexto IOwinContext)

{ var manager = new ApplicationUserManager(new UserStore (context.Get ()));

// Configurar la lógica de verificación del nombre de usuario

manager.UserValidator = new UserValidator (manager)

{

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 (dataProtectionProvider.Create( "ASP.NET Identity"));

} 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 )]