Création d'un projet de base sur un projet dans .NET avec entité Framework, unité de travail, un modèle de référentiel et une identité avec JWT Access Token.
Pour créer un nouveau crud pour une entité, vous devez faire:
Créer dans MBB.Abrigo.Core.Models modéliser votre entité
public class Person
{
public string Id { get; set; }
[Required]
[MaxLength(50)]
public string FirstName { get; set; }
}
Créer dans MBB.Abrigo.Core.DTO dto votre entité (DTO sera vu pour un client)
public class PersonDTO
{
public string Id { get; set; }
public string FirstName { get; set; }
}
Vous devez ajouter une table dans DB, pour cela dans MBB.Abrigo.Infrastructure dans la classe BaseContext.cs Insérez la ligne suivante:
public DbSet<Person> Persons { get; set; }
Créer dans MBB.Abrigo.Infrastructure.IRepository Une interface pour votre référentiel, après cela, vous devez créer dans MBB.Abrigo.Infrastructure.Repository votre référentiel.
Dans MBB.Abrigo.Infrastructure dans une classe UnitOfWork.cs vous devez ajouter un référentiel (modèle singleton) par exemple:
public PersonRepository PersonRepository
{
get
{
if (this.personRepository == null)
{
this.personRepository = new PersonRepository(context);
}
return personRepository;
}
}
Créer dans MBB.Abrigo.Infrastructure.IManager une interface pour les opérations que votre contrôleur recevra, après cela, mettre en œuvre ces opérations dans MBB.Abrigo.Infrastructure.Manager
Créer dans MBB.Abrigo.WebApi.Controller le contrôleur qui recevra les demandes du client, le contrôleur doit utiliser le gestionnaire. Par exemple:
public class PersonController : ApiController
{
private PersonManager personManager = new PersonManager();
// GET: api/Person
public IEnumerable<PersonDTO> GetPersons()
{
return personManager.GetAll();
}
}
Installer d'abord par console PM> Install-Package System.IdentityModel.Tokens.Jwt après cette création.
Ajouter MBB.Abrigo.WebApi.Models.AccountViewModels.cs Une classe pour le modèle de connexion, par exemple:
public class LoginViewModel
{
public string Username { get; set; }
public string Password { get; set; }
}
Ajouter MBB.Abrigo.WebApi.Controllers.AccountController.cs un contrôleur de connexion, par exemple:
public async Task<IHttpActionResult> Login(LoginViewModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = await UserManager.FindByEmailAsync(model.Username);
if (user != null)
{
if (UserManager.CheckPassword(user, model.Password))
{
var token = TokenGenerator.GenerateTokenJwt(model.Username);
return Ok(token);
}
else
{
return Unauthorized();
}
}
else
{
return Unauthorized();
}
}
Ajouter MBB.Abrigo.WebApi.Controllers.PersonController.cs l'autorisation des demandes, par exemple:
// GET: api/Person
[Authorize]
public IEnumerable<PersonDTO> GetPersons()
{
return personManager.GetAll();
}
Créez une classe pour la génération de jetons dans MBB.Abrigo.WebApi.Security . En voir plus dans ce répertoire.
Ajouter MBB.Abrigo.WebApi.App_Start.WebApiConfig.cs La ligne de code suivante:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Configuración de rutas y servicios de API
config.MapHttpAttributeRoutes();
config.MessageHandlers.Add(new TokenValidationHandler()); //THIS LINE TO ADD
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Ajouter MBB.Abrigo.WebApi.WebApi.cs la ligne de code suivante:
<appSettings>
<add key="JWT_SECRET_KEY" value="clave-secreta-api"/>
<add key="JWT_AUDIENCE_TOKEN" value="http://localhost:49220"/>
<add key="JWT_ISSUER_TOKEN" value="http://localhost:49220"/>
<add key="JWT_EXPIRE_MINUTES" value="30"/>
</appSettings>
Pour toute question ou suggestion, communiquez avec ([email protected])