当前的 2 层应用程序
ASP.NET(成员/角色)– BL – DAL – DB
在用户通过身份验证(成员资格)后,我们使用角色来促进对不同菜单项的授权,例如“报告”和“管理”。然而,作为授权的一部分,我们还必须考虑响应过滤。例如,无论用户的角色如何,通过 id 检索语句的方法应该限制为用户只能通过某些已建立的数据库关系检索属于他们的语句。为了促进这一点,Web 应用程序在会话中维护一个配置文件 (POCO),该配置文件被注入到每个 BL 对象中(也许这个对象应该被合并到IIdentity
)。随后在 BL 中,我们能够确定对 id X 的请求是否确实应该返回一个语句,因为我们知道请求该语句的用户,并且我们知道该语句与应该能够访问它的用户之间的关系.
未来的三层应用
ASP.NET(成员/角色)- WCF - BL - DAL - DB
身份验证似乎保持不变,WCF 服务可以使用密码保护,以确保只有我们的 Web 应用程序(或任何其他具有用户/密码的应用程序)可以访问它。但是,我该如何促进响应过滤?是否有将 ASP.NET 的IPrincipal
/传递IIdentity
给服务的无缝机制?如果是的话,如果我有一个非 ASP.NET 客户端到同一服务,这将如何限制我?如果不是,此信息应该是请求 dto 或请求标头的一部分吗?