2016-09-21 6 views
0

Я использую ViewComponent для отображения боковой панели на одной странице. Мне нужен текущий логин Пользователь для некоторых действий, как можно получить пользователя в ViewComponent? Конечно, я могу перейти как параметр из вида в метод InvokeAsync, но я ищу лучший способ.Как получить текущего пользователя входа в ViewComponent Asp.Net Core

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(); 
    } 
} 

ответ

1

В ViewComponent может пользователь UserClaimsPrincipal вместо пользователя

В ViewComponent:

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

В Контроллере:

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

    public ClaimsPrincipal User { get; } 

    .... 
} 
1

у вас есть доступ к Заявке, так что вы можете получить его, как это:

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

    return View(); 
}