2016-01-20 56 views
1

我們已經在使用Identity進行身份驗證和授權的新項目中使用了Membership,我們能夠以編程方式創建用戶和角色(在Identity項目的Seed方法中)。我們還需要將這些成員資格用戶鏈接到應用程序用戶,例如Employee,同時在應用程序DAL的Seed方法中創建用戶。之前我們曾經使用過SQL腳本。現在我們需要編寫類似的SQL腳本來創建標識用戶和角色。從SQL腳本中,我們可以獲取用戶的MembershipId,並使用此MembershipId值爲其分配Employee's MembershipId列。使用ASP.NET身份在SQL腳本中創建用戶和角色

我們被困在的問題是,存儲過程例如「aspnet_Membership_CreateUser」在Membership DB(aspnetdb)中可用,在我們創建的Identity DB中不可用。

腳本看上去象下面這樣:

-- Create roles for 'XXX' Application 
    EXEC [aspnet_Roles_CreateRole] 'XXX','ADMIN' 
    EXEC [aspnet_Roles_CreateRole] 'XXX','USER' 

    -- Create new membership user 
    EXEC @return_value = [dbo].[aspnet_Membership_CreateUser] 
    @ApplicationName = N'XXX', 
    @UserName = N'[email protected]', 
    @Password = N'QhoM803ew/sdfdf/4NQ=', 
    @PasswordSalt = N'dGzG1ddfdfdfk1Kqwddff==', 
    @Email = N'[email protected]', 
    @PasswordQuestion = N'secretQuestion', 
    @PasswordAnswer = N'secretAnswer', 
    @IsApproved = true, 
    @CurrentTimeUtc = @nowUtc, 
    @CreateDate = @now, 
    @UniqueEmail = 1, 
    @PasswordFormat = 1, 
    @UserId = @MembershipId_OrgAdmin OUTPUT 

    PRINT 'Test Admin Created successfully.' 

    -- Assign role to user 
    EXEC [aspnet_UsersInRoles_AddUsersToRoles] 
     @ApplicationName = N'XXX', 
     @UserNames  = N'[email protected]', 
     @RoleNames  = N'ADMIN', 
     @CurrentTimeUtc = @nowUtc 


    PRINT 'Test Admin assigned to ADMIN Role successfully.' 

    -- Finally create a application user and connect it to membership user 

INSERT INTO OrganizationUser 
(MembershipId,IsDeleted,FirstName,LastName,PhoneNumber,Extension,Address1,Address2,City,State,ZipCode,Country,JobTitle,IsActive,OrganizationId,IsPasswordReset,DownloadCode,IsContactPerson,LastLoginDate,WelcomeEmailDate,CreatedDate,CreatedBy,UpdatedDate,UpdatedBy) 
VALUES 
(@MembershipId_OrgAdmin,0,'XXX','Admin','2888262','800','ABC','Charlotte, SC 21270','SC','SC','21270','US','XXX Admin',1,(select OrganizationId from Organization where Name='XXX'),0,'1-1-14110985',1,null,null,@now,null,@now,null) 

問:

  1. 做這些存儲過程中的身份存在嗎?
  2. 什麼是可能的/建議的方式來處理這種情況,即鏈接成員資格用戶與應用程序用戶使用身份?

回答

2

從會員轉移到身份有很多例子。看看here。我必須自己做幾個項目,並最終編寫一些代碼,使用會員表中的用戶及其角色,迭代並在Identity表中創建新的ApplicationUser,並根據需要自定義。既然您可以向ApplicationUser添加屬性(成員資格中有些棘手),您可以編寫一些代碼,從成員資格(名稱,用戶名,電子郵件等)中獲取所需的信息,操作和創建用戶。存儲在成員資格中的密碼有問題,例如在身份驗證中,他們被散列並且會員可以選擇純文本,加密或散列。

至於你的問題:

  1. 身份沒有存儲過程,也沒有意見。所有查詢都是通過EntityFramework生成的。
  2. 根據您的舊會員資格創建新的ApplicationUsers,並在完成後刪除成員資格(表格,視圖,SP,提供者)。我相信將會員用戶「身份」連接到身份將會在此過程中造成很大的麻煩。所有的身份驗證和管理工作都將由Identity和它的UserManger,SigninManager,RolesManager等來處理,而且你不需要Membership來糾結。
相關問題