gpt4 book ai didi

c# - 如何将 Web n 层应用程序中的用户身份从用户界面层传递到数据访问层以进行审计?

转载 作者:行者123 更新时间:2023-11-30 18:14:02 26 4
gpt4 key购买 nike

我构建了一个以 n 层架构构建的 Web 应用程序,即 UI、BLL、API (WebAPI)、DAL。我想通过这种关注点分离实现的是在 DAL 上启用基本审计,即 RowCreatedBy、RowUpdatedBy 等等,但是我想找出将用户身份从 UI 层向下传递到我的数据访问层,而不是将它作为参数添加到我所有的 crud 调用中。那里的选项是使用 Thread.CurrentPrincipal,但它可以工作,但要注意的是我的应用程序托管在 IIS 中,位于具有特定标识集的应用程序池下。我希望 CurrentUser 在我的所有应用程序层中都可用。请告知最佳方法?

注意:我知道有人可能问过这个问题,但从我看到的其他引用文献来看,没有一个能满足我的设想。

最佳答案

我不能说我的方法是“最好的”,但它适合我。

在我的案例中,MVC 5 网络应用程序使用 Microsoft 的身份验证。我使用三个数据库来分离关注点,

  • 身份(身份验证和授权)
  • 申请(所有申请数据)
  • Elmah(异常记录)

当记录存储在属于用户的应用程序数据库中时,将使用 userId(身份数据库中的 nvarchar(128) Guid 字符串)。

唯一的缺点是,当检索记录以在客户端显示时,必须将每个用户 ID 的关联名称添加到显示数据中。这非常简单,因为我的 MVC Controller 通过直接注入(inject)传入 ApplicationUserManager。

在需要用户名的 Entity Framework 模型中,我添加了一个带有名称字段的部分类并更新它(如下所示)。如果我使用的是 View 模型,则采用相同的方法。

r.WhoSavedName = (from u in _userManager.Users where u.Id == r.WhoSavedId select u.UserName).FirstOrDefault();

关于c# - 如何将 Web n 层应用程序中的用户身份从用户界面层传递到数据访问层以进行审计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51440118/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com