你的位置:首页 > 软件开发 > ASP.net > 还在为身份验证引入的Microsoft.AspNet.Identity.EntityFramework导致多上下文,生成的DB改名困扰吗?

还在为身份验证引入的Microsoft.AspNet.Identity.EntityFramework导致多上下文,生成的DB改名困扰吗?

发布时间:2015-11-26 13:01:12
最近一个项目需要在API里面集成身份验证,所以选择了Microsoft.AspNet.Identity.Core,以及Microsoft.AspNet.Identity.Owin来实现,但是在实现过程中发现了需要引入Microsoft.AspNet.Identity.Entity ...

  最近一个项目需要在API里面集成身份验证,所以选择了Microsoft.AspNet.Identity.Core,以及Microsoft.AspNet.Identity.Oget='_blank'>win来实现,但是在实现过程中发现了需要引入Microsoft.AspNet.Identity.EntityFramework ,导致在代码内出现了多个EF的上下文,虽然网上到处有改名的方式,但是对于强迫症患者,一个工程里多个上下文始终不能接受。果断查看有无方案解决

  通过获取源码发现,Microsoft.AspNet.Identity.EntityFramework只是封装了EF,完全可以自己来做,下面简单说明下实现思路。

  本文是基于web api5.2+unity+ef来实现

  1.通过源码可以查看的继承体系

  还在为身份验证引入的Microsoft.AspNet.Identity.EntityFramework导致多上下文,生成的DB改名困扰吗?

  可以看到其核心是Core中的UserManager来操作,并且Microsoft.AspNet.Identity.EntityFramework封装了EF的上下文和操作的模型。

  2.按照需要自定义模型

  Microsoft.AspNet.Identity.EntityFramework   IdentityRole  -> RoleInfo :IRole   只需要继承IRole即可,默认的左联按需取舍

  IdentityUser  -> UserInfo : IUser

  自定义 UserRoleInfo,UserClaimInfo,AccountLoginInfo

  3.把新的模型添加到自己的EF上下文

  通过codefirst在Map里自定义表名字段类型等,想怎么做怎么做。

  4.添加身份操作的Store替换Microsoft.AspNet.Identity.EntityFramework里的UserStore和RoleStore

  定义一个新的接口,方便注入

  

/// <summary>  /// 身份验证Store接口  /// </summary>  public interface ICustomerIdentityStore :    IUserLoginStore<UserInfo, string>,    IUserClaimStore<UserInfo, string>,    IUserRoleStore<UserInfo, string>,    IUserPasswordStore<UserInfo, string>,    IUserSecurityStampStore<UserInfo, string>,    IQueryableUserStore<UserInfo, string>,    IUserEmailStore<UserInfo, string>,    IUserPhoneNumberStore<UserInfo, string>,    IUserTwoFactorStore<UserInfo, string>,    IUserLockoutStore<UserInfo, string>,    IUserStore<UserInfo>  {  }

原标题:还在为身份验证引入的Microsoft.AspNet.Identity.EntityFramework导致多上下文,生成的DB改名困扰吗?

关键词:ASP

ASP
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。