asp.net identity 2.1使用StructureMap注入IAuthenticationManager

时间:2014-08-28 09:25:43

标签: asp.net-mvc-5 structuremap asp.net-identity-2

有人可以指点我一些样品或指示如何实现这个目标吗?

2 个答案:

答案 0 :(得分:8)

这最初是通过将Identity转换为使用int作为here描述的唯一键值来实现的。

然后我扩展了它并使用IAuthenticationManager创建了一个自定义AuthenticationManager。

然后按如下方式设置StructureMap:

For<IAuthenticationManager>()
    .Use<MyAuthenticationManager>(
     () => new MyAuthenticationManager(HttpContext.Current.GetOwinContext().Authentication));

谢谢@trailmax

答案 1 :(得分:7)

我没有使用过StructureMap,但我使用了Autofac和SimpleInjector。

Autofac注册将如下所示:

builder.Register(c => HttpContext.Current.GetOwinContext().Authentication).As<IAuthenticationManager>();

SimpleInjector中的注册如下所示:

container.RegisterPerWebRequest(() => HttpContext.Current.GetOwinContext().Authentication);

从查看StructureMap教程我可以猜测注册会是这样的:

ForRequestedType<IAuthenticationManager>()
    .TheDefaultIs(() => HttpContext.Current.GetOwinContext().Authentication)