0

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

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

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

松散耦合身份验证的最佳模式是什么?DAL 应该向 MVC 代码询问用户名,还是 MVC 告诉 DAL?其中一个有优点或缺点吗?

谢谢!

4

1 回答 1

1

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

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

于 2010-06-05T22:25:04.973 回答