将Asp.Net WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Asp.Net WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点相关的知识,希望对你有一定的参考价值。
我们有一个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令牌的授权。
提前致谢!
此致,巴拉
如果你的mvc站点只是客户端代码而没有任何主要的后端c#。这不需要安全性,因为您的数据来自API,这是需要保护的。如果你不想在不同的域中分离这两个。 Angular需要读取从服务器发送的用户信息,这就是HTTP加密cookie不起作用的原因。如果它们将成为不同的服务器和域,再加上您需要API的多个消费者,您应该使用refreh令牌和整个事物转移到基于oAuth和bearer token的登录。这样,您可以将api扩展为多个负载均衡器,并仍然使用承载令牌,这将是无状态的。话虽如此,你仍然可以通过将cookie存储在cookie中来实现cookie,angular可以解析并使用这些值,api可以验证令牌的签名并使用这些值。由于他们必须在同一个域上,所以他们可以共享cookie。这可以在不使用cookie的情况下完成,也可以使用LocalStorage。
以上是关于将Asp.Net WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS + Asp.net WebApi - 由于 CORS,无法进行身份验证
移动浏览器上的 AngularJS 和 ASP.Net WebAPI 社交登录
分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi
带有 AngularJS CORS 的 IE9、IE8 返回“访问被拒绝” - ASP.NET WebApi