如何在ASP.NET标识中创建不同的用户类型?

我是网络开发的新手。 现在我用ASP.NET Identity学习ASP.NET MVC 5。 你能否在我的情况下给我一些建议:

在我的网站中,我想要一些类型的用户。 例如:买方卖方

他们每个人都可以登录并控制他的部分信息。(例如,买家可以更改他的信息,添加请求。卖家也可以更改自己的信息并添加商品)

现在,我创建这样的东西:

using Microsoft.AspNet.Identity.EntityFramework; using System.Data.Entity; public class ApplicationUser : IdentityUser { public int? BuyerId { get; set; } public int? SellerId { get; set; } public virtual Buyer Buyer { get; set; } public virtual Seller Seller { get; set; } } public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("DefaultConnection") { } ... } 

当我们创建用户时,他会获得一些信息的角色和属性(例如,如果是买方,他将拥有“买方”角色和一些买方属性(卖方将为空)。

这是正常的做法吗?

更新:

我想我选择了一个不好的例子(卖方和买方)。 在我的情况下,我有一些像recomendation系统(另一个例子):

  1. 第一类用户,可以添加关于他自己的信息并找到一些项目(例如水果)
  2. 第二类用户,添加此项目(附加信息)(例如苹果,梨,葡萄。其他(第二类用户)添加蔬菜)
  3. 最后一类用户,可以添加一些其他信息(例如城市)

系统可以基于关于用户的附加信息(例如,最近的经验等)和项目(例如种类,成本等)来确定用户的偏好(一些蔬菜或水果)。

不,这不是你想要处理的方式。 用户是用户。 如果你在能力上有一个真正的区别,你可以使用角色,但在大多数系统中,比如你所描述的,作为“买家”或“卖家”并不是一个黑白分明的东西:买东西的人,可能最终喜欢卖,卖家可能真的想买东西。 我的建议是不要做任何区分。 如果您想在某人可以出售之前进行一些审批流程,那么您可以再次使用“卖家”角色,只有那些已添加到该角色的人才会看到卖家选项。

如果您需要存储作为买方或卖方独有的信息,那么您还可以使用声明,这比向用户模型添加其他属性更灵活,并且更灵活地创建实际的外键关系以存储额外的数据。

您应该看看Membership-和RoleProviders,Microsofts处理此问题的标准方法。

然后,您可以选择以下两个选项之一。

  1. 如果您想采用简单的方法,您可以使用Microsofts在SQL数据库中存储用户和角色的标准方法,并为此获得Web用户管理。

  2. 如果您已在自定义系统中拥有大量用户和角色,那么您可能希望编写自定义成员资格和角色提供程序,以便将现有用户和角色映射到您希望在站点中执行的操作。 在这里查看此示例。