【问题标题】:Separation of concerns and authentication关注点和身份验证分离
【发布时间】:2011-02-28 06:23:39
【问题描述】:

我正在努力成为一名优秀的开发人员并将我的顾虑分开。我有一个包含所有 Web 代码的 ASP.NET MVC 项目,以及一个包含所有模型代码的 DAL 项目。

有时,DAL 中的代码需要检查当前用户是否有权执行某些操作,方法是检查 CurrentUser.IsAdmin 之类的内容。

对于网站,电流来自 Windows 用户名(来自 HttpContext.Current.User.Identity),但这显然是网络问题,不应与 DAL 耦合。

松散耦合身份验证的最佳模式是什么? DAL 应该向 MVC 代码询问用户名,还是 MVC 告诉 DAL?两者各有优劣?

谢谢!

【问题讨论】:

    标签: asp.net-mvc separation-of-concerns


    【解决方案1】:

    通常我在控制器级别而不是数据级别处理安全性。如果您想在数据级别处理它,那么我会使用注入为您的 DAL 提供当前用户或访问当前用户身份的方法。在这种情况下,这意味着在创建 DAL 实例时从控制器中注入用户对象。我有时这样做是为了审计,即当前用户可能是允许访问修改用户数据的角色的成员。在这种情况下,我想将进行更改的实际用户插入到审计表中。我会避免使用 HttpContext.Current - 您应该使用控制器上的属性并注入它们,而不是让 DAL 从静态对象中获取它们。这将使您的 DAL 更容易测试。

    在控制器中处理安全性时,您可以使用 AuthorizeAttribute 或派生自它的自定义属性来实现您的横切安全问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-03
      • 2021-11-22
      • 2016-12-25
      • 1970-01-01
      • 2014-12-25
      • 2018-12-02
      • 1970-01-01
      • 2020-08-02
      相关资源
      最近更新 更多