Bha*_*rat 6 c# identity asp.net-mvc-4 asp.net-core
我有使用Identity 2.0的旧版 MVC 应用程序。最近我还使用Identity 6.0 创建了 .Net 6 API (AspNetCore.Identity.EntityFrameworkCore)。
笔记:这个框架中有一些与模式相关的更改,例如一些附加的表和字段。检查我最后添加的快照。
问题是我必须管理的通用数据库。
是否有任何选项可以让我在不更改代码的情况下遵循,我的截止日期很紧,而且我真的不想创建外部 API 来验证旧的遗留应用程序。任何帮助或想法将非常感激。
小智 1
我遇到了同样的问题,最终使用架构创建了新的身份核心表。
builder.ToTable(name: "Users", "Identity");
builder.ToTable(name: "Roles", "Identity");
builder.ToTable(name: "UserRoles", "Identity");
builder.ToTable(name: "UserClaims", "Identity");
builder.ToTable(name: "UserLogins", "Identity");
builder.ToTable(name: "UserTokens", "Identity");
builder.ToTable(name: "RoleClaims", "Identity");
Run Code Online (Sandbox Code Playgroud)
然后,我在旧的身份用户表上使用触发器来保持新的身份用户表同步。
CREATE/*ALTER*/ TRIGGER [dbo].[IdentityUsers_Sync] ON [dbo].[Users]
AFTER INSERT, UPDATE AS
BEGIN
--INSERT
IF NOT EXISTS (SELECT * FROM deleted)
BEGIN
INSERT INTO [Identity].[Users]
(
Id,
UserName,
NormalizedUserName,
Email,
NormalizedEmail,
EmailConfirmed,
PasswordHash,
SecurityStamp,
PhoneNumber,
PhoneNumberConfirmed,
TwoFactorEnabled,
LockoutEnabled,
AccessFailedCount
)
SELECT
Id,
UserName,
UPPER(UserName),
Email,
UPPER(Email),
EmailConfirmed,
PasswordHash,
SecurityStamp,
PhoneNumber,
PhoneNumberConfirmed,
TwoFactorEnabled,
0,
0
FROM inserted
END
--UPDATE
IF EXISTS (SELECT * FROM inserted) AND EXISTS (SELECT * FROM deleted)
BEGIN
UPDATE iu
SET
iu.UserName = i.UserName,
iu.NormalizedUserName = UPPER(i.UserName),
iu.Email = i.Email,
iu.NormalizedEmail = UPPER(i.Email),
iu.EmailConfirmed = i.EmailConfirmed,
iu.PasswordHash = i.PasswordHash,
iu.SecurityStamp = i.SecurityStamp,
iu.PhoneNumber = i.PhoneNumber,
iu.PhoneNumberConfirmed = i.PhoneNumberConfirmed,
iu.TwoFactorEnabled = i.TwoFactorEnabled,
iu.LockoutEnabled = 0,
iu.AccessFailedCount = 0
FROM [Identity].[Users] iu, inserted i
WHERE iu.Id = i.Id
END
END
GO
ALTER TABLE [dbo].[Users] ENABLE TRIGGER [IdentityUsers_Sync]
GO
Run Code Online (Sandbox Code Playgroud)
我的计划是在遗留系统中创建一个 api 控制器来处理新的注册(通过任何新的核心应用程序中的 HttpClient)。然后触发器将拾取它并使新系统保持同步。
让遗留系统使用新的身份表目前看来不是一个选择。也许可以将其他字段添加到新架构中并使用触发器来填充它们?没试过。
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |