c# - DbContext 模型构建器中的用户详细信息
问题描述
我是 razor pages / efcore / aspnet 身份的新手,并且一直试图弄清楚这一点,但它打败了我。
基本上,我使用 AspNet Identity 进行用户身份验证和授权。我用一个额外的 OrganisationId 扩展了 AspNetUsers,它是组织实体的 FK;并将 ID 添加为身份声明存储中的声明。这工作正常。
现在我需要根据经过身份验证的用户的 organizationId 设置一个efcore 全局过滤器,这样他们就只能查看分配给他们组织的数据。
但是,我无法在模型构建器中访问经过身份验证的用户详细信息。
public class SDMOxContext : IdentityDbContext<
ApplicationUser, ApplicationRole, string,
ApplicationUserClaim, ApplicationUserRole, ApplicationUserLogin,
ApplicationRoleClaim, ApplicationUserToken>
{
public SDMOxContext(DbContextOptions<SDMOxContext> options)
: base(options)
{ }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Set global filter so users can only see projects within their organisation.
builder.Entity<Project>().HasQueryFilter(project => project.OrganisationId == 1);
}
我需要输入存储为用户声明的用户组织 ID,而不是全局过滤器中的 1。通常我是这样理解的:
User.FindFirstValue("OrganisationId")
但是,当前上下文中不存在用户。
解决方案
推荐阅读
- javascript - 如何从动态值中获取第一个值
- android - flutter app: 创建应用时出现问题
- node.js - Discord.json 如何在嵌入中调整头像的大小?
- c# - 程序不会进入下一个方法
- javascript - 如何让bootstrap 4卡组件全屏?
- react-native - React Native:在 screenOptions 中使用状态
- rust - 什么是导致段错误的 Rust 代码示例?
- php - 使用登录会话将数据显示到文本输入字段 php mysqli
- firebase - 如何用 Firebase 返回 x 最近的人?
- javascript - Discord bot嵌入自定义表情js