我正在尝试构建一个小型 Blazor Maui 应用程序示例,该应用程序使用身份服务器对用户进行身份验证。我试图达到可以从 Maui 应用程序登录的程度,然后每当我使用 blazorWebview 组件时,都可以访问用户的身份验证状态以进行身份验证决策。
目前,我在 Maui 应用程序的 razor 组件中设置了身份服务器登录流程,这完成了登录流程。
现在我希望能够将该登录状态/主体信息传递到 Blazor Web 视图以在组件中使用(其中一些在外部类库中引用)。有人有幸这样做过吗?
(另外,我已按照此处的 Microsoft 文档实现我自己的自定义身份验证状态提供程序,并将其添加到依赖项注入中,但没有说明如何将身份验证信息传递到 Blazor Web 视图)。
我是第一次学习干净和垂直切片架构,如果我们使用 ASP.NET Core Identity,我很难理解授权和身份验证的适用范围。而且,在某些情况下,感觉将身份用户(使用用户名、密码、电子邮件等)与任何用户相关的域实体分开会很棘手。
例如,如果我们有一个使用 ASP.NET Core MVC、ASP.NET Core Identity 的解决方案,那么示例项目结构可能如下:
演示/WebUI 项目:
app.services.InjectInfrastructure(); // same for application
Run Code Online (Sandbox Code Playgroud)
基础设施项目:
应用项目:
领域项目:
因此,我们可以有一个具有以下流程的场景:
我很难分离身份验证问题的情况是系统中的用户根据他们在登录时所做的选择具有不同的角色和权限。
例如,一个教育应用程序,教师可以选择他们当前代表的学校。在一所学校中,他们可能担任某种角色(例如校长),而在另一所学校中,他们可能担任特权较小的角色。
在这样的场景中,角色、应用程序用户(都是身份问题)似乎与域(将容纳不同的学校和每个学校拥有的角色)紧密耦合。
我的首要问题是,我们如何以干净的架构方式使用 ASP.NET 身份来实现这种身份验证/授权场景?
目前这种情况带来了多个问题:
有没有人曾经遇到过/使用干净的架构实现过这样的系统?任何人对此有任何见解都会很棒!
asp.net-mvc asp.net-identity asp.net-core clean-architecture