Unity MVC注入当前用户

时间:2012-02-29 23:05:16

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership unity-container

我正在使用基本的Unity MVC Nuget Bootstrapper。 我想将当前登录的用户注入我定义的服务

_container.RegisterType<IDoSomethingService, DoSomethingService>();

这样DoSomethingService获取ICurrentUser对象或某种形式的解析器。

我试图避免像

那样打电话
DoSomethingService.DoSomething(currentUserUsingService,...);

或者在所有MVC控制器的构造函数中也避免设置:

DoSomethingService.CurrentUSer = User.Identity.Name;

1 个答案:

答案 0 :(得分:10)

在我的项目中,我使用下一个:

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传递给我在控制器中的服务方法。