ViewComponentAsp.NetCore中如何获取当前登录用户
How get current login user in ViewComponent Asp.Net Core
我在某些页面中使用 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();
}
}
嗯,您可以访问当前 HttpContext, from which you can get or set the Current User。
这是一些伪代码:
var user = this.HttpContext.User;
您有权访问请求,因此您可以这样获取它:
public async Task<IViewComponentResult> InvokeAsync()
{
_userManager.GetUserId(Request.HttpContext.User);
return View();
}
在 ViewComponent 中可以使用 user UserClaimsPrincipal
而不是 User
在 ViewComponent 中:
public abstract class ViewComponent
{
public ClaimsPrincipal UserClaimsPrincipal { get; }
....
}
在控制器中:
[Controller]
public abstract class ControllerBase
{
protected ControllerBase();
public ClaimsPrincipal User { get; }
....
}
我在某些页面中使用 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();
}
}
嗯,您可以访问当前 HttpContext, from which you can get or set the Current User。
这是一些伪代码:
var user = this.HttpContext.User;
您有权访问请求,因此您可以这样获取它:
public async Task<IViewComponentResult> InvokeAsync()
{
_userManager.GetUserId(Request.HttpContext.User);
return View();
}
在 ViewComponent 中可以使用 user UserClaimsPrincipal
而不是 User
在 ViewComponent 中:
public abstract class ViewComponent
{
public ClaimsPrincipal UserClaimsPrincipal { get; }
....
}
在控制器中:
[Controller]
public abstract class ControllerBase
{
protected ControllerBase();
public ClaimsPrincipal User { get; }
....
}