删除或修改AspNet标识的选项

时间:2017-03-03 04:28:24

标签: mysql asp.net-mvc entity-framework asp.net-identity

我正在使用Entity Framework 6.1.3开发asp.net mvc Web应用程序。 默认情况下出现的asp.net身份对我来说似乎不错,直到我的老板说我们无法对数据库表(用户,用户角色)进行任何更改以适应aspnet身份,因为它是遗留数据库..这里描述:https://www.youtube.com/watch?v=elfqejow5hM

那么,我现在的选择是什么? 我可以完全删除aspnet身份吗?怎么样? 我可以告诉我的identitycontext我的表名和列是不同的,并且还改变了rolemanager中的行为吗?

除此之外,我的数据库是一个mysql db干杯:)

1 个答案:

答案 0 :(得分:2)

带有个人用户帐户的默认ASP.NET MVC项目,附带一个名为Owin的中间件,简而言之,它为您的应用程序提供了大量身份验证配置,例如:

  • Cookie身份验证
  • Cookies External Auth
  • 双因素SignIn(例如密码+手机短信代码)
  • Facebook身份验证
  • OAuth Bearer Token
  • 等...

同时,Identity是一个用于混合各种旧成员资格的库,因此允许您使用许多ASP.NET框架,例如ASP.NET MVC,WebForms等。此外,它还带有内置实现,它也可以作为owin功能的提供者。虽然,Identity都基于接口,因此开发人员可以轻松地自定义任何内容,例如插入/拔出功能。这只是一个简短的描述。

  

那么,我现在的选择是什么?

  1. 使用Identity的内置引擎,它会为自己创建新表(包括AspNetUsers和AspNetRoles),你赢了&mix < / strong>使用现有表格。在Models文件夹中,有一个IdentityModels.cs文件,其中包含ApplicationDbContext类,继承IdentityDbContext。为您的模型带来现有DbSet(包括现有用户和角色)。您可以在ApplicationUser(默认情况下带有代表IdentityUser的全新项目)和现有用户之间创建关系。因此,您根本不会影响现有的表格。
  2. 您可以自己实现所有身份的界面(不是那么难,但需要一些时间来理解),然后您可以分别实现现有的UserRole实现{ {1}}和IUser与身份相结合。
  3. 您可以让IRoleUser的现有模型继承RoleIdentityUser。在此之后,您的IdentityRole自然希望在表格中插入/更新某些列以适应ApplicationDbContextIdentityUser模型(因为您的类现在继承自它们),那么您可能希望配置它以避免更改现有表。
  4.   

    我可以完全删除aspnet标识吗?

    当然可以。如果您根本不需要Owin的所有功能,为简单起见,您甚至可能不会使用它。

      

    如何?

    您可以使用表单身份验证而不是个人用户帐户创建新项目,并实现自定义IdentityRole以与现有{{1}进行交互}}。为表单身份验证实现自定义RoleProvider很容易。您可以通过查询表格或使用Web服务来让提供商检查角色,这取决于您。

      

    我可以告诉我的identitycontext我的表名和列是什么   不同并且还会改变rolemanager中的行为吗?

    不确定。覆盖Role中的RoleProvider方法(继承OnModelCreating的方法),以在生成/更新数据库时更改其所有默认行为。您可能不会调用ApplicationDbContext,因为这会为您的表创建大量配置。

    我建议您开始阅读ASP.NET IdentityUsing MySQL Storage with an MySQL EF Provider,这样您就可以决定是保留身份,自定义身份,删除身份等等。