自定义身份验证与服务层?

时间:2010-01-19 08:29:03

标签: asp.net-mvc

我有一个带有3个“图层”的应用程序,第一个是“datalayer”,第二个是“businesslayer”,第三个是asp.net mvc网站。我正在尝试以正确的方式添加表单身份验证。

我应该以某种方式配置它以使用业务层吗?获取/添加/更新作为身份验证一部分的用户?

我应该在哪个项目中添加用户验证?

/ M

1 个答案:

答案 0 :(得分:7)

身份验证应始终发生在应用程序边界,因为使用相同域模型的不同应用程序可能具有不同的身份验证需求。如果您决定将域模型公开为Web服务,则表单身份验证可能不是最佳的身份验证机制。

在ASP.NET MVC中,您可以使用Visual Studio中的默认项目模板轻松实现UserName / Password身份验证,但是一旦用户通过身份验证,您应该设置Thread.CurrentPrincipal

通常,IPrincipal是在.NET中建模用户上下文的标准基础。例如,HttpContext.User是一个IPrincipal。

在您的域模型和数据访问模块中,您可以使用Thread.CurrentPrincipal来实现授权逻辑。这使您可以相互独立地更改身份验证和授权。

如果您需要在域模型中使用更丰富的用户概念,则可以使用User class implement IPrincipal