我目前正在.NET环境中使用企业应用程序(n-layered),我想知道在BussinessLayer(BL)中管理身份验证/授权+数据过滤的最佳方法.我们将使用来自多个接口(ASP.NET应用程序和Web服务)的BL,我认为我的ServiceLayer应该完成这项工作,但我找不到最好的方法.
我想它可能是这样的:(1)用户可能使用FormsAuthentication进行身份验证(ASP.NET Web客户端).(2)ASP .NET代码(Controller/CodeBehind)实现一个服务来完成一些用户案例,以某种方式传递'用户'.(3)服务方法检查"用户"是否存在(认证)和他的角色(授权)以验证他是否可以调用该方法.如果未经过身份验证或授权,则抛出异常.(4)服务使用存储库+其他服务+完成工作所需的任何服务.如果需要某种细粒度过滤(例如,用户仅对某些项目具有权限),则服务会自动应用它.
我想要的是将ServiceLayer与'web stuff'隔离(不访问会话...),但是谁知道User调用其方法才能正常运行.此外,我不知道如何以良好的方式将该工作与ASP .NET身份验证相匹配......我正在考虑将服务ctor中的"用户"总结,以便其方法具有所需的"上下文",那工作?...我会很感激一些迹象或现有的代码片段.
谢谢您的帮助...