实体框架 – ASP.net身份,IoC和共享DbContext
有没有人成功地使用OWIN ASP.NET Identity附加IoC来共享与WebApi(或MVC)应用程序相同的DbContext?
我想如果ASP.Net标识加载用户,它将加载到与应用程序其余部分相同的dbcontext中. (使用AutoFac作为IoC – 但不介意其他容器的示例) 编辑: 我发现的问题是,在设置OWIN类时,我无法找到一种方法: 话虽如此,你如何设置解决上述两点的ASP.Net Identity? 解决方法
编辑:根据评论添加实例化OWIN管道.
由于ASP.NET Identity使用的IdentityDbContext继承自DbContext,您可以简单地创建自己的继承自IdentityDbContext的实现,如此 public class ApplicationContext : IdentityDbContext<ApplicationUser> { //additional DbSets public DbSet<OtherEntity> OtherEntities { get; set; } } public class ApplicationUser : IdentityUser { //any custom properties you want for your user. } public class OtherEntity { [Key] public int Id { get; set; } } 现在就使用IoC而言,从统一的角度来看,我就像这样注册UserStore的一个实例 public static void RegisterTypes(IUnityContainer container) { container.RegisterType<IUserStore<ApplicationUser>,UserStore<ApplicationUser>>(new InjectionConstructor(typeof(ApplicationContext))); } 然后围绕用户管理器创建一个包装器 public class ApplicationUserManager : UserManager<ApplicationUser> { public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store) { } } 并在我需要用户经理的任何地方注入. 对于OWIN管道,您需要通过容器实例化OAuthAuthorizationProvider,就像这样. container.RegisterType<IOAuthAuthorizationServerProvider,ApplicationOAuthProvider>(new InjectionConstructor("self",typeof(ApplicationUserManager))); 然后,例如在WebApi中,您只需要在启动时从容器中获取实例. static Startup() { OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/Token"),Provider = (IOAuthAuthorizationServerProvider)GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(IOAuthAuthorizationServerProvider)),AccessTokenExpireTimeSpan = TimeSpan.FromDays(5),AllowInsecureHttp = true,RefreshTokenProvider = new SimpleRefreshTokenProvider() }; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Razor中的条件链接
- asp.net – 设置Response.Status生成“HTTP状态字
- asp.net – 保护ELMAH,同时可以通过RSS阅读器访问
- asp.net-mvc – 如何使用Asp.net MVC验证列表属性
- 强制CamelCase在ASP.NET WebAPI每个控制器
- asp.net-mvc – 文件上传MVC
- 当我使用ASP.NET传输文件时,为什么IIS7会忽略我的
- asp.net – 有没有像ELMAH axd for log4net来监控
- asp.net-mvc – ASP.NET MVC是否有任何DateTime路
- asp.net-mvc – 如何测试我的Web应用程序是否可以