如何获得当前登录用户在ViewComponent Asp.净的核心

本文关键字:Asp ViewComponent 核心 用户 何获得 登录 | 更新日期: 2023-09-27 18:08:17

在某些页面中使用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();
    }
}

如何获得当前登录用户在ViewComponent Asp.净的核心

在ViewComponent中可以使用UserClaimsPrincipal代替user

在ViewComponent:

public abstract class ViewComponent
{
    public ClaimsPrincipal UserClaimsPrincipal { get; }
    ....
}
在控制器:

[Controller]
public abstract class ControllerBase
{
    protected ControllerBase();
    public ClaimsPrincipal User { get; }
    ....
}

您可以访问请求,因此您可以像这样获取它:

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

嗯,你可以访问当前的HttpContext,从中你可以获得当前声明标识,它实现了IIdentity

下面是一些伪代码:

var user = this.HttpContext.User;