gpt4 book ai didi

c# - MediatR - 处理查询中的当前用户

转载 作者:行者123 更新时间:2023-12-03 20:47:36 26 4
gpt4 key购买 nike

在查询中对当前用户建模的最佳方法是什么?我正在创建一个 Razor 页面应用程序。在执行查询和命令时,我需要能够附加当前用户。有推荐的方法吗?

最佳答案

下面的方法对我很有效,因为我让用户进入了我的 Razor 项目所依赖的服务层。

根据 David Fowler here 的指导, 我创建了一个 UserAccessor类如下:

public class UserAccessor : IUserAccessor
{
private readonly IHttpContextAccessor _accessor;

public UserAccessor(IHttpContextAccessor accessor)
{
_accessor = accessor ?? throw new ArgumentNullException(nameof(accessor));
}

public ClaimsPrincipal User => _accessor.HttpContext.User;
}

我在启动时通过调用在我的 Razor 项目中注册
services.AddTransient<IUserAccessor, UserAccessor>()

然后根据需要将其注入(inject) MediatR 处理程序和我的 DbContext 以及一些工厂。
private readonly IUserAccessor _userAccessor;

public EventLogFactory(IUserAccessor userAccessor)
{
_userAccessor = userAccessor ?? throw new ArgumentNullException(nameof(userAccessor));
}
IHttpContextAccessor引用于 UserAccessor在不引用 Microsoft.AspNetCore.App 元包的项目中需要 Microsoft.AspNetCore.Http.Abstractions nuget,并且还需要您的 Razor 项目实现 AddHttpContextAccessor()在启动时:
// Register IHttpContextAccessor for services to get access to the HttpContext.  
services.AddHttpContextAccessor();

希望这可以帮助。

关于c# - MediatR - 处理查询中的当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com