使用ASP公开现有的服务层.净之前
本文关键字:服务 ASP 使用 | 更新日期: 2023-09-27 18:01:26
我目前有一个分层架构,如下:
- 服务层——这是与域的主要交互点。包含所有业务规则、验证等。
- 数据/存储库层——这一层处理所有数据的持久性。不包含业务逻辑或验证。主要包含
Repository<T>
,UnitOfWork
(EF Specific)和所有EF的东西,如DbContext
,EntityTypeConfiguration
等。 - 实体框架 SQL Server
我正在使用一个贫血域模型,所以基本的POCO代表问题域。
我有几个关于通过ASP.NET WebApi
暴露这一点的问题。
- 保安住在哪里?比如用户是否有权限编辑记录,或者记录的类型。用户是否可以执行特定的操作等。以及诸如身份验证/基于角色的授权之类的东西。
- 我应该使用WebApi作为实际的服务层,还是使用它以RESTful方式在HTTP上公开我现有的服务层?
- 给出一个基本的例子,比如更改一个类别的名称,我在哪里强制当前用户具有更改所述记录的权限?我是否依赖
Thread.CurrentPrincipal
来获得Identity
来检查给定的角色,并在WebApi中设置?Mvc应用程序?
有什么好的例子可以说明我所说的这种情况吗?
顺便说一句-我正在使用ASP。. NET MVC 5来提供应用程序的外壳(SPA),然后前端将全部是AngularJS。
关于您的服务应该具有的安全级别的第一个问题,我认为正确的答案应该是所有应用程序中的一个原则:
服务应该有足够的安全性来保护数据不受不需要的用户的访问。
一旦你创建了一个服务并将其公开,你就暴露在可能的攻击中,当然,复杂的安全规则可能会增加开发时间,某些情况下可能会导致性能下降;衡量威胁的级别,并相应地规划您的安全。
WebApi是为了通过Http/Rest提供服务而创建的,所有内置的原则和功能都是为了这个目的而创建的,所以关于你的第二个问题,就像你在最后推断的那样,它是一个服务层,但是是Http/Rest服务层。WebApi使用属性Authorize
来加强安全性,就像它通常与。net框架一样,你可以继承和扩展它。你可以在这里了解更多。
既然你正在使用Angularjs,即使你需要MVC5来使用WebApi,我的建议是你不要使用MVC razor或任何其他服务器技术来渲染你的页面。