我正在创建一个asp.net core 2.0应用程序(具有EFCore身份),
因此,我的观察方式是有两种不同类型的用户:只有一个用户会使用该网站,并且需要(更多?)安全性,因为如果他忘记密码等,则需要一个确认的电子邮件。用户将能够查看该移动应用收集的所有报告和(敏感)信息。此身份验证基于cookie。
另一方面,移动应用程序用户永远不会访问除自己输入的信息以外的信息,也不需要他们的电子邮件。他们只需要用户名和网站用户发布的密码即可。而且此身份验证是承载令牌。
我希望将所有这些都放在一个项目中,所以我的问题是我如何在一个项目中处理这两种类型的用户(和身份验证过程)?
我阅读了有关授权方案,声明,过滤器,安全属性,配置startup.cs的文档。我相信,如果只是角色上的区别,我可以解决这个问题。我在这里搜索的有关不同类型用户的问题似乎实际上是关于角色的,但是我的情况我认为不能以这种方式处理。例如,移动应用程序用户不会注册自己或处理密码等,所有这些都将由拥有“完整帐户”的网站用户管理。
如果被问到我可能会发布一些代码,但是我真正需要的是一些指导,例如:
不要在一个项目中这样做,创建两个,一个用于MVC,一个用于WEBAPI,并在每个项目中处理不同的安全性/授权/注册问题;
或:您需要创建两个不同的“ AppUser”类,以及(在这种情况下,如何配置身份/我添加到startup.cs中的内容?)
我确实发现了这一点: https://medium.com/agilix/asp-net-core-supporting-multiple-authorization-6502eb79f934
但是,这仍然缺少有关不同用户的部分。可能是我已经在Microsoft文档和其他地方阅读过我需要执行此操作的信息,但是我无法将它们拼凑在一起-例如,我知道如何在Identity中创建和注册自定义用户类,我知道如何向MVC管道添加过滤器和属性,我想我需要所有这些来完成我需要的工作,但是我无法逐步了解我需要做的事情。
答案 0 :(得分:0)
我认为您只需为移动用户访问Web api提供一个用户定义。该用户将无权使用该网络应用。您只需要确保从移动应用程序进行网络API调用时,它只会影响链接的网络用户数据。我假设这就是发出的代码/密码的目的。
答案 1 :(得分:0)
您可以使用ASP.net Core授权和授权化来轻松实现这一目标。如果您还使用Entity Framework Core,则将在设置Web应用程序中的所有帮助表格方面提供很多帮助。
您的关键是设置2个不同的角色。一种用于移动应用程序,另一种用于网络应用程序。在登录部分中,检查该角色,如果用户角色正确,则允许该用户访问该应用程序。您在网上有很多有关此的信息,如果您在“基于mvc核心角色的授权”上进行搜索,则会找到很多帮助。
使用这种方法,您还可以轻松地在Web应用程序上设置一个管理部分来处理移动应用程序用户,您可以在其中添加新用户并处理其密码。
使用这种方法时,您会失去对表的控制权,但是如果不需要的话,为什么要发明轮子呢?
祝你好运!