1

Мы использовали членство раньше и теперь в новом проекте мы используем Identity для аутентификации и авторизации. Мы можем создавать пользователей и роль программно (в методе Seed для проекта Identity). Нам также необходимо связать этих пользователей членства с пользователем приложения, например Employee, при создании пользователей в методе Seed приложения DAL. Для чего раньше мы использовали SQL Script. Теперь аналогичный SQL Script нам нужно написать для создания пользователей и ролей Identity. Из SQL Script мы могли бы захватить MembershipId для пользователя и использовать это значение MemberhipId для присвоения ему столбца Employee's MembershipId.Создание пользователей и ролей в SQL Script с идентификатором ASP.NET

Проблема, за которую мы застряли, - это хранимые процедуры, например. «aspnet_Membership_CreateUser», который был доступен в БД членства (aspnetdb), недоступен в созданном нами БД Identity.

Сценарий выглядит следующим образом:

-- 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. Каковы возможные/предлагаемые способы решения этой ситуации, например, членство в членстве с пользователем приложения, использующее Identity?

ответ

2

Есть много примеров перехода от членства к Identity. Посмотрите here. Я должен был сделать это сам для нескольких проектов и в итоге написал код, который забирает пользователей из таблиц членства с их ролями, повторяя и создавая новые ApplicationUsers в таблицах Identity, настраиваемых для моих нужд. Поскольку вы можете добавлять свойства к ApplicationUser (что сложно в членстве), вы можете написать код, который берет то, что вам нужно от членства (имя, имя пользователя, адрес электронной почты и т. Д.), Манипулировать и создавать пользователей. Были проблемы с паролями, хранящимися в членстве, так как в Identity они хэшируются, а в членстве вы можете выбрать простой текст, зашифрованный или хэшированный.

Что касается ваших вопросов:

  1. Идентичность нет хранимых процедур, ни взглядов. все запросы генерируются через EntityFramework.
  2. Создайте новые ApplicationUsers на основе вашего старого членства и отпустите членство (таблицы, представления, SP, провайдеры) после его завершения. Я считаю, что «связывание» пользователей членства с личностью вызовет много проблем на этом пути. Все средства аутентификации и управления будут обрабатываться Identity и его UserManger, SigninManager, RolesManager и т. Д., И вам не нужно, чтобы членство было запутано.
Смежные вопросы