lab*_*roo 8 c# asp.net-identity
我试图理解UserManagerFactory中间件,这里解释了usermanager的每个请求生命周期管理.
我创建了这个我从Startup Configuration方法调用的类
public class CustomUserManagerProvider
{
public static CustomUserStore<CustomUser> CreateCustomUserStore()
{
return new CustomUserStore<CustomUser>(/*Need to inject dependencies here*/);
}
public static CustomUserManager CreateCustomUserManager(IdentityFactoryOptions<CustomUserManager> options,
IOwinContext context)
{
return new CustomUserManager(context.Get<CustomUserStore<CustomUser>>());
}
}
Run Code Online (Sandbox Code Playgroud)
和启动配置
public void Configuration(IAppBuilder app)
{
app.CreatePerOwinContext(CustomUserManagerProvider.CreateCustomUserStore);
app.CreatePerOwinContext<IngramUserManager>(CustomUserManagerProvider.CreateCustomUserManager);
////....Other things
}
Run Code Online (Sandbox Code Playgroud)
现在,我的CustomUserStore有一些依赖项,我想在构造函数中注入.
IOC容器的组合根知道如何解决这些依赖关系.
如何CustomUserManagerProvider识别DI容器(如果有意义的话)......
虽然这有效
public static CustomUserStore<CustomUser> CreateCustomUserStore()
{
var dependency = DependencyResolver.Current.GetService<ISomeDependency>();
return new CustomUserStore<CustomUser>(dependency);
}
Run Code Online (Sandbox Code Playgroud)
但是,我试图避免服务定位器(反)模式.这是我唯一的选择吗,这是对的吗?
我正在使用Ninject.
我只是在组合根中的requestScope中创建一个UserManager并注入到控制器中,这不是同一个东西吗?
在Web应用程序中,CreatePerOwinContext与创建InRequestScope相同吗?
是的,如果您愿意,可以以不同的方式将UserManager注入控制器,没有什么需要使用CreatePerOwinContext/IdentityFactoryMiddleware.
| 归档时间: |
|
| 查看次数: |
2752 次 |
| 最近记录: |