2014-05-03 29 views
0

我现在有一个分层架构,如下服务层:将现有使用ASP.NET的WebAPI

  1. 服务层 - 这是该域的主要交互点。 包含所有业务规则,验证等。
  2. 数据/存储库层 - 这是处理所有数据持久性的层。不包含业务逻辑或验证。基本上囊括了Repository<T>UnitOfWork(EF具体)和所有的EF之类的东西DbContextEntityTypeConfiguration的等
  3. 实体框架
  4. SQL服务器

我使用的是贫血域模型,所以基本POCO的代表问题领域。

我有几个关于通过ASP.NET WebApi公开的问题。

  1. 保安住在哪里?基本上,用户有权访问编辑记录或记录类型。用户是否可以执行特定的操作等。以及诸如身份验证/基于角色的授权等。
  2. 我应该使用WebApi作为实际服务层,还是使用它以RESTful方式通过HTTP公开现有服务层?
  3. 给出一个基本的例子,说改变一个类别的名称,我在哪里强制当前用户有权更改所述记录?我是否依靠Thread.CurrentPrincipal获取Identity来检查给定的角色,并将其设置在WebApi中? Mvc应用程序?

有没有什么好的例子可以说明我正在谈论的这种情况?

顺便说一句 - 我使用ASP.NET MVC 5来提供应用程序的外壳(SPA),然后前端将成为所有的AngularJS。

+0

请注意,如果您打算使用Angularjs和WebApi,则不需要ASP.NET MVC5 – Dalorzo

+0

@Dororzo - 我们使用ASP.NET MVC来提供应用程序的外壳,并提供模板控制器。 。还使用Cassette捆绑/缩小。 – Sam

回答

1

关于你对安全水平的服务应该有正确答案的第一个问题是什么,我相信它应该是在所有应用中一个原则:

服务应该有足够的安全性来保护数据从不需要的用户

一旦您创建了一个服务并将其公开,您将面临可能具有复杂安全规则的攻击,这可能会增加开发时间,并且某些情况可能会降低性能;衡量威胁的级别并相应地规划您的安全。

WebApi的创建目的是通过Http/Rest提供服务所有的原则和功能内置都是用这个意图进行的,所以关于你的第二个问题,就像你推断的那样,它是一个服务层,但是Http/Rest服务层。

WebApi使用属性Authorize来强制执行安全性,因为它通常可以使用.NET框架,您可以从中继承并扩展它。你可以了解更多关于它here

而且由于您使用Angularjs,即使您需要MVC5来使用WebApi,我的建议是您不使用MVC剃须刀或任何其他服务器技术来呈现您的页面。

相关问题