如何获得当前登录用户在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中可以使用UserClaimsPrincipal
代替user
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;