将Asp.Net WebAPI从Asp.Net MVC站点迁移到AngularJS App

时间:2017-12-19 17:26:20

标签: angularjs asp.net-mvc asp.net-web-api2

我们有一个Asp.Net MVC 5.0项目,它使用AngularJS作为前端。该项目在同一个项目中有WebAPI Controller,并部署到同一个网站。该应用程序使用个人用户帐户项目模板构建,并使用Asp.Net Identity和Claims。有文件上传模块,用户上传大约100MB +文件,通过webapi和ng-file-upload插件。由于用户群的增加,我们希望通过将API单独分离到新服务器中的单独站点并在需要时进行扩展来快速提高上载速度。由于API控制器目前处于使用OWIN cookie身份验证的ASP.Net MVC解决方案中,因此API由cookie身份验证中间件授权。 将API放入单独的站点的快速方法是什么?我相信我们需要基于MVC站点实现OAUTH令牌,并通过启用CORS使新的API站点使用令牌。如果我们这样做,我们不确定是否需要删除基于cookie的身份验证并使用基于新令牌的身份验证重新实现身份验证。我们还可以通过对Asp.Net MVC站点使用基于cookie的身份验证并将api分离到新站点来采取其他方法吗?

注意 - 我们还计划使用此API构建移动应用,因此我们认为我们必须将webapi分离到单独的站点并使用基于OAuth令牌的授权。

提前致谢!

此致 巴拉

1 个答案:

答案 0 :(得分:0)

如果你的mvc网站只是客户端代码而没有任何主要的后端c#。这不需要安全性,因为您的数据来自API,这是需要保护的。如果你不想在不同的域中分离这两个。 Angular需要读取从服务器发送的用户信息,这就是HTTP加密cookie不起作用的原因。如果它们将成为不同的服务器和域,再加上您需要API的多个消费者,您应该使用refreh令牌和整个事物转移到基于oAuth和bearer token的登录。这样,您可以将api扩展为多个负载均衡器,并仍然使用承载令牌,这将是无状态的。话虽如此,你仍然可以通过将cookie存储在cookie中来实现cookie,angular可以解析并使用这些值,api可以验证令牌的签名并使用这些值。由于他们必须在同一个域上,所以他们可以共享cookie。这可以不使用cookie而只使用LocalStorage来完成。