使用实体框架,工作单位,存储库模式和JWT Access代币的身份创建了一个基本结构为.NET中的项目。
要为一个实体创建一个新的CRUD,您必须做:
在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中创建您的实体(客户将看到DTO)
public class PersonDTO
{
public string Id { get; set; }
public string FirstName { get; set; }
}
您应该在db中添加一个表,因为在BaseContext.cs中的MBB.Abrigo.Infrastructure中插入下一行:
public DbSet<Person> Persons { get; set; }
在MBB.Abrigo.Infrastructure.IRepository中创建一个存储库的接口,此后,您应该在MBB.Abrigo.Infrastructure.Repository中创建您的存储库。
在class UnitOfWork.cs中的MBB.Abrigo.Infrastructure中,您应该添加一个存储库(Singleton模式):例如:
public PersonRepository PersonRepository
{
get
{
if (this.personRepository == null)
{
this.personRepository = new PersonRepository(context);
}
return personRepository;
}
}
在MBB.Abrigo.Infrastructure.IManager中创建一个操作的接口,您的控制器将接收您的操作,此后在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请求的授权,例如:
// 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]进行沟通)