엔티티 프레임 워크, 작업 단위, 저장소 패턴 및 JWT Access Token을 사용하여 .NET의 프로젝트에 구조화 된 기본을 만들었습니다.
엔티티를위한 새로운 크루드를 만들려면 다음을 수행해야합니다.
MBB.Abrigo.Core.Models 에서 엔티티를 모델링하십시오
public class Person
{
public string Id { get; set; }
[Required]
[MaxLength(50)]
public string FirstName { get; set; }
}
MBB.Abrigo.Core.DTO dto in Entity (클라이언트를 위해 DTO가 표시됩니다)
public class PersonDTO
{
public string Id { get; set; }
public string FirstName { get; set; }
}
DB에 테이블을 추가해야합니다. MBB.Abrigo.Infrastructure Class BaseContext.cs 다음 줄을 삽입하십시오.
public DbSet<Person> Persons { get; set; }
MBB.Abrigo.Infrastructure.IRepository 에서 작성하십시오. 리포지토리의 인터페이스를 이후에 MBB.Abrigo.Infrastructure.Repository 로 작성해야합니다.
MBB.Abrigo.Infrastructure in class UnitOfWork.cs 는 예를 들어 리포지토리 (싱글 톤 패턴)를 추가해야합니다.
public PersonRepository PersonRepository
{
get
{
if (this.personRepository == null)
{
this.personRepository = new PersonRepository(context);
}
return personRepository;
}
}
MBB.Abrigo.Infrastructure.IManager in 컨트롤러가 수신 할 작업에 대한 인터페이스를 작성하고,이 작업을 구현 한 후 MBB.Abrigo.Infrastructure.Manager 에서 구현하십시오.
MBB.Abrigo.WebApi.Controller 로 작성 클라이언트의 요청을받을 컨트롤러를 작성하십시오. 컨트롤러는 관리자를 사용해야합니다. 예를 들어:
public class PersonController : ApiController
{
private PersonManager personManager = new PersonManager();
// GET: api/Person
public IEnumerable<PersonDTO> GetPersons()
{
return personManager.GetAll();
}
}
먼저 Console PM> Install-Package System.IdentityModel.Tokens.Jwt 에 의해 설치됩니다.
MBB.Abrigo.WebApi.Models.AccountViewModels.cs 로그인 모델을위한 클래스를 추가하십시오.
public class LoginViewModel
{
public string Username { get; set; }
public string Password { get; set; }
}
MBB.Abrigo.WebApi.Controllers.AccountController.cs 로그인을위한 컨트롤러를 추가하십시오.
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();
}
}
MBB.Abrigo.WebApi.Controllers.PersonController.cs in 요청에 대한 권한 부여를 예를 들어 추가하십시오.
// GET: api/Person
[Authorize]
public IEnumerable<PersonDTO> GetPersons()
{
return personManager.GetAll();
}
MBB.Abrigo.WebApi.Security 에서 토큰 생성에 대한 클래스를 만듭니다. 해당 디렉토리에서 더 많이보십시오.
MBB.Abrigo.WebApi.App_Start.WebApiConfig.cs 를 다음 줄을 추가하십시오.
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 }
);
}
}
MBB.Abrigo.WebApi.WebApi.cs 를 다음 코드 줄을 추가하십시오.
<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>
질문이나 제안이 있으시면 ([email protected])