gpt4 book ai didi

c# - 在整个应用程序中使用用户 ID 的方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:40 25 4
gpt4 key购买 nike

相关内容在这里:Best practice to maintain a user id (MVC)

通过 IdentityDbContext 提供的身份验证服务非常适合我的 Web 应用程序。我能够添加我希望每个用户拥有的字段,并且一切都很好地打包(因此我不必对身份验证进行重大更改)。此商品包中包含一个位于 AspNetUsers 中的 ApplicationUser_Id。我的问题是我应该在整个应用程序中使用 ApplicationUser_Id 作为我的用户 ID,还是我应该填充一个单独的非身份表来保存我的用户 ID?

如果有类似情况的人可以解释他们选择一个或另一个(或完全不同的用法!)的思维过程,我会很高兴


编辑

根据要求,我需要从我的 WebForms 应用程序转换到 MVC(出于可伸缩性原因)。以前在我的 WebForms 应用程序中,我有一个包含许多表的数据库。这些表中的大多数是联合表,我在其中使用 userId 作为外键。在我之前的应用中,我将用户信息存储在一个名为Users的表中,后续数据存储在UserHasMonitorUserHasKeyboardUserHasCPU中 等。我还有 MonitorKeyboardCPU 等表。

我的 WebForms 应用程序用于记录用户和他们拥有的计算机部件。每个实体(例如监视器或键盘)都保存在自己的表中。通过联表将表联结在一起,通过查询联表显示数据。

自从转向 MVC 后,我想利用 MVC 提供的身份随附的内置身份验证。有了这个,我得到了一个唯一的用户 ID 和密码哈希以及我发现我需要的其他字段。但是,因为这是一个新的球赛,我的问题是我应该如何使用我的用户 ID,因为它在身份提供者中,而不是像以前那样使用自定义 Users 表?

我现在已经设置好了,我的 MVC 应用程序,有 2 个连接字符串。一个连接字符串处理所有身份表,而我的另一个连接字符串将保存我的联合表。

所以,归结起来:

  1. 如何将用户 ID 与也使用许多联合表的 MVC 应用程序集成?单独的连接字符串?两个独立的数据库?

  2. 既然我正在使用 Identity 表,我是否应该使用 virtual 将我的表连接在一起(在我的模型中)?这会改变我的拼接表的外观吗?

  3. 任何代码示例总是很好,我环顾四周但没有找到一个定义良好的过程来使用,所以这就是我的问题在这里的原因。

最佳答案

除了看起来有点奇怪,我没有发现在应用程序中使用该 ID 有任何问题,它仍然是用户的主键。

如果您不喜欢那种 ID,那么一个单独的表将是一个灾难性的想法,相反您可以让 ASP.NET Identity 使用整数作为主键,查看 this article ,它还可以帮助您了解 Identity 的工作原理以及如何扩展它。

==========

编辑

由于我无法在您的帖子下发表评论,希望您能看到。

How do I integrate a user id with an MVC application that also uses many joint tables? Separate connection strings? Two separate databases?

答案是单个连接字符串、单个数据库和上下文,不是从 DbContext 继承,而是从 IdentityDbContext 继承。例如(假设您正在使用代码优先迁移):

public class yourContext : IdentityDbContext<ApplicationUser>
{
static yourContext()
{
Database.SetInitializer<yourContext>(new MigrateDatabaseToLatestVersion<yourContext, Configuration>());
}

public yourContext()
: base("Name=YourConnectionString")
{
}
}

继承自 IdentityDbContext 将创建 Identity 在当前数据库中工作所需的数据库表。


Should I be using virtual to connect my tables together (within my models) now that I am using Identity tables; will this alter the way my joint tables look?

您应该像往常一样在 OnModelCreating 方法中创建表关系(例如 Fluent API)


Any code examples are always nice, I've looked around but haven't found a good-defined procedure to use, so that is why my question is here.

以下是我如何将我的身份用户连接到联系人:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ApplicationUser>().HasRequired(c => c.Contact)
.WithMany()
.HasForeignKey(c => c.ContactId);

base.OnModelCreating(modelBuilder);
}

在我的 ApplicationUser 类(派生自 IdentityUser)中我有这个:

public class ApplicationUser : IdentityUser
{
public int ContactId { get; set; }

public virtual Contact Contact { get; set; }
}

关于c# - 在整个应用程序中使用用户 ID 的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com