c# - 如何从 Azure AD B2C 用户存储中获取 ASP.NET Core 3.1 中的用户信息?
问题描述
ASP.NET Core 3.1 应用是使用 Visual Studio 新项目向导创建的。大多数使用默认选项,但身份验证配置为使用存储在 Azure AD B2C 中的单个用户帐户。
Web 应用程序由 Visual Studio 搭建、编译和运行良好。登录时,当前用户名会打印在标题中,使用@User.Identity.Name
.
在摆弄之后@User.Identity.Name
,不清楚如何访问存储在 AAD B2C 中的其余用户信息或“声明”。
在 MVC 控制器中访问存储在 AAD B2C 中的用户信息的正确/建议方法是什么?
解决方案
您可以UserManager
使用依赖注入注入您的类。下面给出一个例子:
using ContactManager.Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace ContactManager.Pages.Contacts
{
public class DI_BasePageModel : PageModel
{
protected ApplicationDbContext Context { get; }
protected IAuthorizationService AuthorizationService { get; }
protected UserManager<IdentityUser> UserManager { get; }
public DI_BasePageModel(
ApplicationDbContext context,
IAuthorizationService authorizationService,
UserManager<IdentityUser> userManager) : base()
{
Context = context;
UserManager = userManager;
AuthorizationService = authorizationService;
}
}
}
并且,您可以使用FindByNameAsync
orFindByIdAsync
来获取用户。
您可以在 .NET Core 3.1 Identity 上关注这个优秀的材料 。
推荐阅读
- php - 发现很难在 php 中获取每篇博客文章的评论数
- javascript - 侧边栏中的下拉菜单
- html - 如何用 CSS 圆整直线?
- google-app-engine - 是否可以在 GAE 灵活的自定义运行时中挂载 Google Filestore
- apache-zookeeper - 如何限制传入连接的 Zookeeper 端口范围
- java - 为什么会话变量必须是可序列化的?
- python - 元素当前不可见,可能无法操作 - Selenium webdriver
- html - 如何在引导程序中禁用断点
- vue.js - Vuetify:如何将头像或图标添加到导航抽屉的底部
- java - 封闭来自外部内部类的内部类的外部类实例引用