Unity MVC впрыскивает текущего пользователя - PullRequest
3 голосов
/ 01 марта 2012

Я использую базовый загрузчик Unity MVC Nuget Bootstrapper.Я хотел бы добавить текущего зарегистрированного пользователя в службы, которые я определяю

_container.RegisterType<IDoSomethingService, DoSomethingService>();

, чтобы DoSomethingService получал объект ICurrentUser или некоторую форму распознавателя.

Я пытаюсь избежатьсовершать вызовы типа

DoSomethingService.DoSomething(currentUserUsingService,...);

или в конструкторе всех контроллеров MVC, также избегая установки:

DoSomethingService.CurrentUSer = User.Identity.Name;

1 Ответ

10 голосов
/ 01 марта 2012

В своих проектах я использую следующее:

public interface ICurrentUserService
{
    int? GetId();
}

Я регистрирую следующую реализацию:

public class CurrentUserService: ICurrentUserService
{
    public int? GetId()
    {
        if (!HttpContext.Current.User.Identity.IsAuthenticated)
            return null;
        return int.Parse(HttpContext.Current.User.Identity.Name);//When auth - id stored in cookie
    }
}

_container.RegisterType<ICurrentUserService, CurrentUserService>();

И сделать мои службы зависит от ICurrentUserService (с помощью параметра ctor) или передать userId в методы моих служб в контроллерах.

...