أنشئت منظمة أساسية منظمة إلى مشروع في .NET مع إطار الكيان ، وحدة العمل ، وبطاطا المستودع والهوية مع الرمز المميز للوصول إلى JWT.
لإنشاء 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 ، لهذا في MBB.Abrigo.Infrastructure في class BaseContext.cs إدراج السطر التالي:
public DbSet<Person> Persons { get; set; }
إنشاء في MBB.Abrigo.Infrastructure.IRepository واجهة لمستودعك ، وبعد ذلك يجب أن تنشئ في MBB.Abrigo.Infrastructure.Repository مستودعك.
في MBB.Abrigo.Infrastructure في الفصل UnitOfWork.cs يجب عليك إضافة مستودع (نمط المفرد) على سبيل المثال:
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])