Decoupling ASP.NET Identity from the Core Domain Models - Onion Architecture

后端 未结 3 1786
清歌不尽
清歌不尽 2021-02-01 10:03

I am using this sample project (https://github.com/imranbaloch/ASPNETIdentityWithOnion) as my application architecture, in this sample the core is completly decoplied from the i

3条回答
  •  情歌与酒
    2021-02-01 10:32

    I'm using this framework, no need to have a link in every entity To get the userID reference, i added a property UserIDBy in BaseEntity so every entity will inherit it.

    public abstract class BaseEntity
    {
        public int Id { get; set; }
        public string UserIDBy { get; set; }
    }
    

    Next, in the web project, there is already an extension method called GetUserId(this IIdentity identity) in IdentityExtensions.cs, so to stock the UserIDBy in every Create and Edit action result:

    Create Action Result :

     // POST: /Region/Create
        [HttpPost]
        public async Task Create([Bind(Include = "RegionName")] Region region)
        {
            if (ModelState.IsValid)
            {
                // TODO: Add insert logic here
                var id = User.Identity.GetUserId();
                region.UserIDBy = id.ToString(); 
    
                await _regionService.AddAsync(region);
                return Json(new { success = true });
            }
    
            return PartialView("_Create", region);
        }
    

    Edit Action Result :

     //// POST: /Region/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "id,RegionName")] Region region)
        {
            if (ModelState.IsValid)
            {
                var id = User.Identity.GetUserId();
                region.UserIDBy = id.ToString(); 
                _regionService.Update(region);
                return Json(new { success = true });
            }
            return PartialView("_Edit", region);
        }
    

    Dont forget to import it :

    using Myapp.Web.Extensions;
    

提交回复
热议问题