创建注册表单和角色asp mvc身份

时间:2015-10-15 19:24:37

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity asp.net-roles

我对创建注册表格感到很困惑。我正在建立一个购物车网站,我希望用户在我的网站上注册。为此我在我的数据库中有用户表,也是一个管理表。当我使用内置的mvc模板创建新项目时,它提供的控制器(真的很棒)使用自己的数据库。

1)我想将注册的用户信息存储在我的数据库中,并且不使用默认的DB Context登录它们 2)我有2个表(用户,管理员)现在如何在两个表上使用角色管理器?我应该将Admin的表ID放在自动创建的表(aspnetroles,aspnetcalims,aspnetuserroles)中,还是应该只创建一个名为USERS的表并管理角色?

抱歉我的英语。

1 个答案:

答案 0 :(得分:1)

您可以为所有用户使用默认用户表,因为您有角色可以区分它们。为管理员角色的用户创建另一个表只会添加几乎相同的表来维护。

如果您想使用自己的数据库上下文,可以从IdentityDbContext<TUser>IdentityDbContext<TUser, TRole, TKey, TUserLogin, TUserRole, TUserClaim>而不是DbContext派生,然后将其用于身份验证。

您可以通过扩展它的实体类(如IdentityUser)来进一步自定义ASP.NET Identity模式。

class MyUser : IdentityUser
{
    public string MyColumn { get; set; }
}

为了获得更多控制,您可以扩展IdentityUser<TKey, TLogin, TRole, TClaim>以指定除字符串(uniqueidentifier)以外的键的类型,角色的自定义实体等。

您可以通过覆盖数据库上下文的OnModelCreating并使用DbModelBuilder将默认身份实体映射到自定义表,就像使用Fluent API的任何其他EF实体一样。

e.g。

modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers");

ASP.NET Identity可以自定义。如果您熟悉Entity Framework,则不应该有任何扩展问题。

一些基本的例子: http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx