我有一个业务逻辑层(“存储库”),它是作为一组由可交换具体实现支持的.NET接口公开的。业务逻辑层是否应该实现授权和认证?
本来我有这个业务层实现身份验证和授权(authn/authz),这意味着我有接口,如IUserIdentity和IUserRole,并且所有访问敏感数据的方法在执行操作之前都接受了IUserIdentity并执行了授权。
到目前为止,业务层一直是非常前端的不可知论者......但是现在当我尝试集成到ASP.NET网站时,我意识到ASP.NET本身具有丰富的认证/授权系统通过成员资格和角色API内置于其中。
所以,问题是,我应该从商业逻辑层去掉所有的authn/AuthZ的,并依赖于Web前端做到这一点?这将简化很多事情,但我不知道我是否会后悔将它推出去。
另一种方法是保持authn/AuthZ的在我的业务逻辑,而是通过自定义的会员/角色提供其与ASP.NET集成。然而,这看起来很麻烦......我仍然需要调查这样做的成本。
你会做什么(或已经做了),为什么?
其实(抱歉,我应该提到这一点)我正在使用ASP.NET MVC,它通过Authorize属性实现了安全性方面的概念。如果我记得正确,.NET中的 – DSO 2009-02-24 22:24:30