如何为WebAPI和MVC拥有两种不同类型的用户.netcore 2.0

时间:2019-05-06 19:32:45

标签: c# asp.net-core-mvc asp.net-core-2.0 asp.net-core-webapi

我正在创建一个asp.net core 2.0应用程序(具有EFCore身份),

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

因此,我的观察方式是有两种不同类型的用户:只有一个用户会使用该网站,并且需要(更多?)安全性,因为如果他忘记密码等,则需要一个确认的电子邮件。用户将能够查看该移动应用收集的所有报告和(敏感)信息。此身份验证基于cookie。

另一方面,移动应用程序用户永远不会访问除自己输入的信息以外的信息,也不需要他们的电子邮件。他们只需要用户名和网站用户发布的密码即可。而且此身份验证是承载令牌。

我希望将所有这些都放在一个项目中,所以我的问题是我如何在一个项目中处理这两种类型的用户(和身份验证过程)?

我阅读了有关授权方案,声明,过滤器,安全属性,配置startup.cs的文档。我相信,如果只是角色上的区别,我可以解决这个问题。我在这里搜索的有关不同类型用户的问题似乎实际上是关于角色的,但是我的情况我认为不能以这种方式处理。例如,移动应用程序用户不会注册自己或处理密码等,所有这些都将由拥有“完整帐户”的网站用户管理。

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

  • 不要在一个项目中这样做,创建两个,一个用于MVC,一个用于WEBAPI,并在每个项目中处理不同的安全性/授权/注册问题;

  • 或:您需要创建两个不同的“ AppUser”类,以及(在这种情况下,如何配置身份/我添加到startup.cs中的内容?)

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

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

2 个答案:

答案 0 :(得分:0)

我认为您只需为移动用户访问Web api提供一个用户定义。该用户将无权使用该网络应用。您只需要确保从移动应用程序进行网络API调用时,它只会影响链接的网络用户数据。我假设这就是发出的代码/密码的目的。

答案 1 :(得分:0)

您可以使用ASP.net Core授权和授权化来轻松实现这一目标。如果您还使用Entity Framework Core,则将在设置Web应用程序中的所有帮助表格方面提供很多帮助。

您的关键是设置2个不同的角色。一种用于移动应用程序,另一种用于网络应用程序。在登录部分中,检查该角色,如果用户角色正确,则允许该用户访问该应用程序。您在网上有很多有关此的信息,如果您在“基于mvc核心角色的授权”上进行搜索,则会找到很多帮助。

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

使用这种方法时,您会失去对表的控制权,但是如果不需要的话,为什么要发明轮子呢?

祝你好运!