gpt4 book ai didi

c# - 在 TagHelper 中获取当前用户

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:18 24 4
gpt4 key购买 nike

在 C# (ASP.NET Core) 项目中,登录后,站点必须根据用户的权限列出一个带有子菜单的菜单。此菜单出现在所有站点中。基本上是一个仪表板菜单。

这个菜单(子菜单)的内容是动态的,根据用户的许可。所以,我想在创建一个 TagHelper 类时,获取当前登录的用户,获取该用户拥有权限的内容,并创建子菜单的内容(一些 <ul><li>)。

我不知道这是不是最好的方法。我接受建议。

但是,如果这种方法可以使用,我如何才能在 TagHelper 类上获取当前登录的用户?我没有 HttpContext在这个类上,只有一个 TagHelperContext .

标签助手:

public class UserContentTagHelper : TagHelper
{
private readonly UserManager<ApplicationUser> _userManager;

public UserContentTagHelper(UserManager<ApplicationUser> userManager)
{
_userManager = userManager;
}

public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.TagMode == TagMode.SelfClosing;

// Error. HttpContext.User not avaliable
var uid = _userManager.GetUserId(HttpContext.User);
}
}

通常为了获取当前登录的用户,我使用 HttpContext.User ,但这仅适用于 Controller 类。

谢谢!

最佳答案

IActionContextAccessor 参数添加到您的构造函数。然后,您可以通过以下方式获取 HttpContext 及其关联的用户:

var user = actionAccessor.ActionContext.HttpContext.User;
var uid = _userManager.GetUserId(user);

您还需要在 Startup 类的 ConfigureServices 方法中注册 IActionContextAccessor:

services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();

关于c# - 在 TagHelper 中获取当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267818/

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