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

Las*_*vik 2 asp.net-mvc

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

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

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

/ M

Mar*_*ann 7

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

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

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

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

如果您需要在域模型中使用更丰富的用户概念,则可以让User类实现IPrincipal.