我正在使用基本的Unity MVC Nuget Bootstrapper。 我想将当前登录的用户注入我定义的服务
_container.RegisterType<IDoSomethingService, DoSomethingService>();
这样DoSomethingService获取ICurrentUser对象或某种形式的解析器。
我试图避免像
那样打电话DoSomethingService.DoSomething(currentUserUsingService,...);
或者在所有MVC控制器的构造函数中也避免设置:
DoSomethingService.CurrentUSer = User.Identity.Name;
答案 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传递给我在控制器中的服务方法。