如何为asp.net mvc和web API

时间:2016-07-06 02:24:14

标签: c# mobile asp.net-web-api authorization restful-architecture

目标是创建一个可以由本机移动设备(ios,android,win phone)共享的api,以及具有各种表示层的web应用程序(asp.net核心MVC,角度)。

计划使用asp.net核心web api实现将由移动客户端以及javascript客户端使用的REST api。我的问题是,因为在理想情况下应该放置安全逻辑,所以将使用像asp.net MVC这样的其他表示层吗?如果我们在REST api中添加检查,则asp.net MVC应用程序控制器必须使用HttpClient调用REST Web api,而不是仅引用业务层(共享类库)。

每个应用程序的身份验证都将由json web令牌处理,因为它们具有移动友好性并且可以轻松扩展。所以我的问题是关于授权安全性以及它所在的位置。

选项1:

web api(安全生活在这里)&gt; <业务/服务层> <数据访问层>数据层

选项2: web api&gt;商业/服务层(安全生活在这里)&gt; <数据访问层>数据层

在选项1中,这适用于移动和客户端前端,因为他们必须调用REST api,但asp.net核心MVC必须使用HttpClient来调用REST api而不是调用共享类库构成buinsess / service层。

在选项2中,所有REST api负责的是调用业务/服务层,在那里处理安全性。

1 个答案:

答案 0 :(得分:0)

听起来你的目标是建立一个公共API。这应该是独立的并且单独处理安全性 - MVC网站只是另一个客户端(可能碰巧生活在同一个解决方案中),但理想情况下,它们之间不应该有太多的引用(基本上只是API合同) 。通过这种方式,您还可以更早地捕获破坏的向后兼容性问题,而不是MVC站点始终以强类型方式工作(即使通过重构),而其他(尤其是移动客户端)也不会 - 你不得不求助于API的版本化。

如果您在服务器端采取某些措施(例如缓存),那么性能确实不应该成为一个问题,那里有大量以这种方式工作的API。