如何让 Web API 和 MVC .net core 2.0 有两种不同类型的用户

How to have two different types of users for WebAPI and MVC .netcore 2.0

我正在创建一个 asp.net 核心 2.0 应用程序(使用 EFCore 作为身份),它具有:

  1. 人们可以在其中注册和购买不同​​计划的网站 (MVC) (有不同的价格等)。因此,这些用户必须确认电子邮件和 添加其他信息以便能够使用它的服务,其中包括 创建和管理移动应用程序用户。
  2. 具有 WebAPI 后端的移动应用程序。该应用程序的用户是工人 谁从一个客户到另一个客户,添加必须的信息 现场收集到应用程序。该信息由 网站用户。

所以,我认为有两种不同类型的用户:只有一种会使用该网站,并且需要(更多?)安全性,因为它需要确认电子邮件以防他忘记密码等。此外,这些用户将能够看到移动应用程序收集的所有报告和(敏感)信息。此身份验证基于 cookie。

另一方面,移动应用程序用户除了自己输入的内容外永远无法访问其他信息,也不需要他们的电子邮件。他们只需要一个用户名和一个由网站用户发布的 code/password。并且此身份验证是不记名令牌。

我更愿意在一个项目中完成所有这些工作,所以我的问题是如何在一个项目中处理这两种类型的用户(和身份验证过程)?

我阅读了有关授权方案、声明、过滤器、安全属性和配置的文档 startup.cs。如果只是角色的不同,我相信我可以处理这个问题。我在这里搜索的关于不同类型用户的问题似乎真的是关于角色的,但我认为不能那样处理。例如,移动应用程序用户不会自行注册或处理密码等,所有这些都将由拥有 "full account".

的网站用户管理。

如果被问到我可能会 post 一些代码,但我真正需要的是一些指导,例如:

我确实发现了这个: https://medium.com/agilix/asp-net-core-supporting-multiple-authorization-6502eb79f934

但这仍然缺少关于不同用户的部分。很可能我已经在微软文档和其他地方阅读了我需要执行此操作的信息,但我无法将它们拼凑在一起 - 例如,我知道如何在身份中创建和注册自定义用户 class,我了解如何向 MVC 管道添加过滤器和属性,我想我需要所有这些来完成我需要的,但我无法理解我需要做的每一步。

我认为您只需要为访问网络的移动用户定义一个用户定义-api。此用户将无权使用 Web 应用程序。您只需要确保当从您的移动应用程序进行 web-api 调用时,它只会影响链接的网络用户数据。我假设这就是发布 code/password 的目的。

您可以使用 ASP.net Core Authorization and Authenitcation 轻松实现此目的。如果您还使用 Entity Framework 核心,您将对在 Web 应用程序中设置所有帮助表单有很大帮助。

你的关键是设置2个不同的角色。一种用于移动应用程序,另一种用于网络应用程序。在登录部分,您检查该角色,如果用户的角色正确,您就允许该用户访问该应用程序。你在网上有很多这方面的信息,如果你在 "mvc core role based Authorization" 上搜索,你会找到很多帮助。

通过这种方法,您还可以轻松地在 Web 应用程序上设置一个管理部分来处理移动应用程序用户,您可以在其中添加新用户并处理他们的密码。

当您使用这种方法时,您会失去对表格的一些控制,但如果您真的不需要,为什么要发明轮子?

祝你好运!