实体框架 – 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应用程序是否可以
