如何从SimpleMembership迁移到ASP.NET.Identity

科林

从MVC4迁移到MVC5,也想使用ASP.NET身份,但是我正在努力寻找能够满足我迁移身份所需的所有内容。将现有网站从SimpleMembership迁移到ASP.NET Identity,建议我要做的就是创建ApplicationUser和迁移数据,其他Web搜索为我提供sql脚本和passowrd哈希建议。但是,在进入之前,我还想解决其他松散的问题。

首先-我有代码可以在我的Seed方法中初始化成员资格系统:

if (!WebSecurity.Initialized)
    WebSecurity.InitializeDatabaseConnection(Config.ConnectionStringName,
        Config.UsersTableName,
        Config.UsersIDColumn,
        Config.UserNameColumn,
        autoCreateTables: true);

所以那需要正确吗?

第二-看起来我需要一个IdentityDbContext那么我应该更改现有上下文来继承它吗?

即代替我当前的代码public class SID2013Context : DbContextpublic class SID2013Context : IdentityDbContext<ApplicationUser>

这样会不会产生迁移,从而创建我需要支持ASP.NET Identity的新表?

完成此操作后,我应该能够插入AccountController,Views,ViewModels并启动为MVC5项目生成的代码。

任何人都可以在这里回答具体问题和/或为我提供更好的资源吗?

科林

我意识到我所链接的网站告诉您如何迁移到Identity表格,但仍在使用SimpleMembership我想始终使用Identity,因此我使用Visual Studio创建了一个空的MVC应用程序,以便可以复制所需的代码并进行修复。这是我执行登录和注销工作的步骤:

  1. 添加ApplicationUser.cs到我的模型项目
  2. 添加IdentityConfig.cs到我的App_Start文件夹
  3. 添加Startup.Auth.cs到我的App_Start文件夹
  4. 添加AccountController.cs到我的Controllers文件夹(重命名为现有控制器)
  5. 已添加Startup.cs到根文件夹
  6. 已添加AccountViewModels.cs到ViewModels文件夹
  7. 将我的上下文更改为继承IdentityDbContext(确实确实意味着在迁移中创建了新表)
  8. 添加了必需的NuGet包并修复了所有名称空间
  9. 现在建立专案
  10. 但是Add-Migration给出了一个错误...“ EntityType IdentityUserRole没有定义键”
  11. ....通过base.OnModelCreating在我的替代中添加来解决
  12. Add-MigrationUpdate-Database-添加所需的表
  13. 将我的自定义字段添加UserProfileApplicationUser数据库中并更新了数据库
  14. 使用sql(在迁移中)将数据从旧表复制到新表。sql包含在这里。NB需要填充SecurityStampGuid以防止在登录期间出错
  15. 登录和注销工作正常
  16. 去除UserProfileSimpleRoleProvider以及RoleManager类-更换必要的代码中。
  17. 删除了对WebMatrix.DataWebMatrix.WebDatadll的引用
  18. 删除<roleManager enabled="true" defaultProvider="simple"><membership defaultProvider="simple">从web.config中

步骤14中使用的SQL:

INSERT INTO dbo.aspnetusers (id
, email
, emailconfirmed
, passwordhash
, securitystamp
, phonenumber
, phonenumberconfirmed
, twofactorenabled
, lockoutenddateutc
, lockoutenabled
, accessfailedcount
, username
, organisationid
, firstname
, lastname
, inactive)
    SELECT
        u.id,
        u.username Email,
        m.isconfirmed EmailConfirmed,
        m.password PasswordHash,
        --SignInManager.PasswordSignInAsync (used in Login method) 
        --throws an exception http://stackoverflow.com/a/23354148/150342
        NEWID() SecurityStamp, 
        u.telephone PhoneNumber,
        CASE
            WHEN u.telephone IS NULL THEN 0
            ELSE 1
        END PhoneNumberConfirmed,
        0 TwoFactorEnabled,
        NULL LockoutEndDateUtc,
        0 LockoutEnabled,
        m.passwordfailuressincelastsuccess AccessFailedCount,
        u.username,
        u.organisationid,
        u.firstname,
        u.lastname,
        u.inactive
    FROM dbo.userprofiles u
        INNER JOIN dbo.webpages_membership m
            ON m.userid = u.id
    WHERE NOT EXISTS (SELECT
        1
    FROM dbo.aspnetusers
    WHERE id = u.id)

INSERT INTO dbo.aspnetroles (id
, name)
    SELECT
        roleid,
        rolename
    FROM dbo.webpages_roles r
    WHERE NOT EXISTS (SELECT
        1
    FROM dbo.aspnetroles
    WHERE roleid = r.roleid)

 INSERT INTO dbo.aspnetuserroles (userid
    , roleid)
        SELECT
            userid,
            roleid
        FROM dbo.webpages_usersinroles ur
        WHERE NOT EXISTS (SELECT
            1
        FROM dbo.aspnetuserroles
        WHERE userid = ur.userid
        AND roleid = ur.roleid)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从表单身份验证迁移到ASP .NET Identity

来自分类Dev

无法迁移到Asp.Net Identity / OWIN

来自分类Dev

从ASP.NET MVC 3迁移到ASP.NET Identity 2.0

来自分类Dev

迁移到Asp.Net Identity 2.0:AspNetUsers表中未创建新列

来自分类Dev

将纯文本密码迁移到asp.net Identity 2.1

来自分类Dev

将密码哈希从ASP.NET Identity 2.0迁移到3.0

来自分类Dev

“ ASP.Net Identity”与“ Windows Identity Foundation”相比如何?

来自分类Dev

如何使用Identity ASP.NET Core通过代码优先迁移为用户和角色播种

来自分类Dev

How does the "ASP.Net Identity" compare with "Windows Identity Foundation"?

来自分类Dev

在ASP.NET Identity中添加角色

来自分类Dev

ASP.Net Identity不创建用户

来自分类Dev

ASP.Net Identity 2 RemovePassword模拟

来自分类Dev

扩展ASP.NET Identity 2.0

来自分类Dev

ASP.Net Identity Force从SQL注销

来自分类Dev

Ninject和ASP.NET Identity 2.0

来自分类Dev

ASP.NET Identity User and Roles in Multisite

来自分类Dev

Asp.net Identity 2.0临时密码

来自分类Dev

使用ASP.NET Identity实施权利

来自分类Dev

被ASP.NET Identity和IdentityDbContext混淆

来自分类Dev

ASP.NET Identity用户创建

来自分类Dev

ASP.NET Identity缺少的字段

来自分类Dev

Ninject和ASP.NET Identity 2.0

来自分类Dev

ASP.NET Identity文档在哪里?

来自分类Dev

ASP.Net Identity 2 RemovePassword模拟

来自分类Dev

Asp.net Identity 2.0临时密码

来自分类Dev

ASP.NET Identity 我的架构

来自分类Dev

ASP.NET Identity会话cookie的安全性如何?

来自分类Dev

使用 ASP.Net Identity 时如何获取 AD 用户

来自分类Dev

在.NET 4.5.1中设置ASP.NET Identity ConnectionString属性