Erstellte ein grundlegendes für ein Projekt in .NET mit Entity Framework, Arbeitseinheit, Repository -Muster und Identität mit JWT Access Token strukturiert.
Um einen neuen CRUD für ein Unternehmen zu erstellen, müssen Sie:
Erstellen Sie in MBB.Abrigo.Core.Models modellieren Sie Ihre Entität
public class Person
{
public string Id { get; set; }
[Required]
[MaxLength(50)]
public string FirstName { get; set; }
}
Erstellen Sie in MBB.Abrigo.Core.DTO dto Ihr Unternehmen (DTO wird für einen Kunden zu sehen)
public class PersonDTO
{
public string Id { get; set; }
public string FirstName { get; set; }
}
Sie sollten eine Tabelle in DB hinzufügen, für dies in MBB.Abrigo.Infrastructure in der Klasse BaseContext.cs die nächste Zeile einfügen:
public DbSet<Person> Persons { get; set; }
Erstellen Sie in MBB.Abrigo.Infrastructure.IRepository Eine Schnittstelle für Ihr Repository. Danach sollten Sie in MBB.Abrigo.Infrastructure.Repository Ihr Repository erstellen.
In MBB.Abrigo.Infrastructure in der Klasse UnitOfWork.cs sollten Sie ein Repository (Singleton -Muster) hinzufügen, zum Beispiel:
public PersonRepository PersonRepository
{
get
{
if (this.personRepository == null)
{
this.personRepository = new PersonRepository(context);
}
return personRepository;
}
}
Erstellen Sie in MBB.Abrigo.Infrastructure.IManager Eine Schnittstelle für die Vorgänge, die Ihr Controller empfängt, danach implementiert diese Vorgänge in MBB.Abrigo.Infrastructure.Manager
Erstellen Sie in MBB.Abrigo.WebApi.Controller Der Controller, der die Anfragen des Clients empfängt, sollte der Controller den Manager verwenden. Zum Beispiel:
public class PersonController : ApiController
{
private PersonManager personManager = new PersonManager();
// GET: api/Person
public IEnumerable<PersonDTO> GetPersons()
{
return personManager.GetAll();
}
}
Zuerst durch Konsole PM> Install-Package System.IdentityModel.Tokens.Jwt Nach diesem Erstellen.
Fügen Sie in MBB.Abrigo.WebApi.Models.AccountViewModels.cs eine Klasse für Anmeldemodell hinzu, zum Beispiel:
public class LoginViewModel
{
public string Username { get; set; }
public string Password { get; set; }
}
Fügen Sie in MBB.Abrigo.WebApi.Controllers.AccountController.cs ein Controller für die Login hinzu, zum Beispiel:
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();
}
}
Fügen Sie in MBB.Abrigo.WebApi.Controllers.PersonController.cs die Autorisierung für die Anfragen hinzu, zum Beispiel:
// GET: api/Person
[Authorize]
public IEnumerable<PersonDTO> GetPersons()
{
return personManager.GetAll();
}
Erstellen Sie eine Klasse für die Token -Generation in MBB.Abrigo.WebApi.Security . Sehen Sie mehr in diesem Verzeichnis.
Fügen Sie in MBB.Abrigo.WebApi.App_Start.WebApiConfig.cs die nächste Codezeile hinzu:
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 }
);
}
}
Fügen Sie in MBB.Abrigo.WebApi.WebApi.cs die nächste Codezeile hinzu:
<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>
Kommunizieren Sie für Fragen oder Vorschläge mit ([email protected])