如何在ViewComponent中获取当前登录用户(Asp.Net Core)

5

我在某些页面上使用ViewComponent来渲染侧边栏。我需要当前登录用户进行某些操作,如何在ViewComponent中获取用户?当然,我可以将其作为参数从视图传递给InvokeAsync方法,但我正在寻找更好的方法。

public class SideBarViewComponent : ViewComponent
{
    private readonly UserManager<User> _userManager;

    public ProfileSideBarViewComponent(UserManager<User> userManager)
    {
        _userManager = userManager;
    }

    public async Task<IViewComponentResult> InvokeAsync()
    {
         //How access User

         _userManager.GetUserId(User);

        return View();
    }
}
3个回答

16

在 ViewComponent 中,可以使用 UserClaimsPrincipal 替代 User。

在 ViewComponent 中:

public abstract class ViewComponent
{
    public ClaimsPrincipal UserClaimsPrincipal { get; }
    ....
}

在控制器中:

[Controller]
public abstract class ControllerBase
{
    protected ControllerBase();

    public ClaimsPrincipal User { get; }

    ....
}

1
他们应该更加一致。 - Yoda

4

4
您可以通过以下方式访问请求:

您可以访问请求,就像这样:

public async Task<IViewComponentResult> InvokeAsync()
{
     _userManager.GetUserId(Request.HttpContext.User);

    return View();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接