我有一个想要迁移到 ASP.NET 5 的现有项目。
目前它是一个简单的 ASP.NET Web 窗体项目,它引用了 2 个 DLL:
通常我不应该碰那些当前工作正常的 2 个 DLL。
现在我想用 2 个新组件替换 ASP.NET Web Forms 项目:
我一直在使用 VS2015 中可用的模板,我也一直在阅读有关身份验证的所有内容,我必须说,我现在对我真正需要什么变得更加困惑...... :(
我的后端 API 中是否需要 MVC?所有的例子都是用 ASP.NET MVC 完成的,但是如果我有一个完整的 SPA 前端,难道我只需要一个简单的 RESTful 服务吗?
我需要什么来进行身份验证?我需要 ASP.NET 身份吗? Identity 是旧成员(member)的新版本吗?它是否负责创建代币?我已经有一个包含所有用户和散列密码的生产数据库。 My Domain.dll 程序集还具有验证用户凭据的所有必要代码。
如果我想允许 Google 或 Facebook 等其他登录服务,我需要什么?我已经使用 ASP.NET 4.5 和 ASP.NET 5 模板创建了一些 Web 应用程序,以了解事情是如何完成的,但这就是困惑变得更糟的地方。 ASP.NET 4.5 模板使用 Owin 的东西(我不熟悉),而 ASP.NET 5 模板没有。
理想情况下,这就是我真正想要的:我想创建一个依赖最少的 Web API 项目,我想避免使用 session 和 cookie,我希望能够使用 Google 和 Facebook 的服务用于登录。
谢谢!
最佳答案
我会说……这听起来像是完全重写。
让我们回顾一下你的观点......
我的后端 API 中是否需要 MVC?
在 ASP.NET 5
我们真的没有 MVC 和 WebAPI 了。它们在概念上非常相似,并且已经合并。一切都与您返回的内容有关。如果您返回 IActionResult
,它将启动 Razor 和 ViewEngines。如果您返回一个对象,那么它将尝试基于 HTTP header (WebApi 所做的)序列化您的对象。
难道我只需要一个简单的 RESTful 服务吗?
如果你有一个完整的 Angular 前端 SPA 应用程序?是的。这就是你所需要的,整个 MVC 的事情不是强制性的。您只需要创建一个 Web api。微软有一个不错的tutorial right here关于如何去做。
我需要什么来进行身份验证?
我强烈推荐 SSO。这减轻了自己重新实现身份验证的需要。如果你更多的是一个公共(public)应用程序,请尝试支持 Facebook/Twitter/Google。如果是商业应用,Azure AD可以完成这项工作,但在那一点上,它特定于您的客户所拥有的,所以......它可能不是最好的解决方案。
我需要 ASP.NET 身份吗?
不,但对于 ASP.NET 5/MVC6,它是目前唯一存在的,所以目前?是的,但是整个 ASP.NET 系统在系统中的每个位置都可以替换。身份不使用旧的成员(member)系统。它使用声明,这是一个完全不同的主题。
Identity 将处理您对每个请求( token 等)进行身份验证所需的一切。好消息?它支持 Facebook、Google 和许多其他网站。
更多信息在这里
基本上,ASP.NET 5
是一个巨大的管道,依赖注入(inject)作为一等公民。向管道添加元素使它们可供管道中的后续人员使用。
此管道在 Startup.cs
中配置并分两步分离。 ConfigureServices
这是配置依赖注入(inject)的位置和Configure
添加管道的实际元素的地方。想要替换默认记录器?配置服务。想要在管道中添加元素?配置。
真的是这样!
推荐阅读:
关于asp.net-web-api2 - ASP.NET 5 (vNext)/Web API/OAuth/OpenID/Tokens/Cookies/我真正需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33632945/