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

chr*_*igo 6 c# asp.net asp.net-mvc entity-framework asp.net-identity

我是网络开发的新手.现在我用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<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

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

这是正常的做法吗?

更新:

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

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

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

Chr*_*att 11

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

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

  • 同样,这就是角色和声明的用途.ASP.NET Identity实际上非常精彩,因为它将用户的概念简化为应该是什么:一个用于进行身份验证的帐户.关于用户可以做什么的所有业务逻辑应该由角色处理,并且关于用户具有什么的逻辑可以由声明处理. (2认同)