相关疑难解决方法(0)

如何在使用ASP.NET标识时更改表名?

我正在使用Visual Studio 2013的发布版本(RTM,而不是RC)(从MSDN 2013-10-18下载),因此使用AspNet.Identity的最新版本(RTM).当我创建一个新的Web项目时,我选择"个人用户帐户"进行身份验证.这将创建以下表:

  1. AspNetRoles
  2. AspNetUserClaims
  3. AspNetUserLogins
  4. AspNetUserRoles
  5. AspNetUsers

当我注册一个新用户(使用默认模板)时,会创建这些表(如上所列),并且AspNetUsers表中插入了一条记录,其中包含:

  1. ID
  2. 用户名
  3. PasswordHash
  4. SecurityStamp
  5. 鉴别

此外,通过向"ApplicationUser"类添加公共属性,我已成功向AspNetUsers表添加了其他字段,例如"FirstName","LastName","PhoneNumber"等.

这是我的问题.有没有办法更改上面表格的名称(首次创建时)或者它们是否总是以AspNet我上面列出的前缀命名?如果表名可以不同的名称,请解释如何.

- 更新 -

我实施了@Hao Kung的解决方案.它确实创建了一个新表(例如我称之为MyUsers),但它仍然创建了AspNetUsers表.目标是用"MyUsers"表替换"AspNetUsers"表.请参阅下面的代码和创建的表的数据库图像.

我实际上想AspNet用我自己的名字替换每个表...例如,MyRoles,MyUserClaims,MyUserLogins,MyUserRoles和MyUsers.

我如何实现这一目标,最终只有一组表格?

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string PostalCode { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-identity

206
推荐指数
5
解决办法
9万
查看次数

如何在Microsoft.AspNet.Identity.EntityFramework.IdentityUser中更改id的类型

(ASP.NET MVC 5,EF6,VS2013)

我试图弄清楚如何在类型中将"Id"字段的类型从字符串更改为int:

Microsoft.AspNet.Identity.EntityFramework.IdentityUser
Run Code Online (Sandbox Code Playgroud)

为了使新用户帐户与整数ID而不是GUID相关联.但似乎这比在我的派生用户类中简单地添加类型为int的新Id属性更复杂.看看这个方法签名:

(来自程序集Microsoft.AspNet.Identity.Core.dll)

public class UserManager<TUser> : IDisposable where TUser : global::Microsoft.AspNet.Identity.IUser
  {
  ...
  public virtual Task<IdentityResult> AddLoginAsync(string userId, UserLoginInfo login);
  ...
  }
Run Code Online (Sandbox Code Playgroud)

因此,似乎ASP.NET身份框架中还有其他方法要求userId为字符串.我还需要重新实现这些课程吗?

解释为什么我不想在用户表中存储id的GUID:

- 将有其他表通过外键将数据与users表相关联.(当用户在网站上保存内容时.)我认为没有理由使用较大的字段类型并花费额外的数据库空间而没有明显的优势.(我知道还有其他关于使用GUID和int ID的帖子,但似乎有很多人建议int id更快并且使用更少的空间,这仍然让我感到疑惑.)

- 我计划公开一个restful端点,以允许用户检索有关特定用户的数据.我认为:

/users/123/name
Run Code Online (Sandbox Code Playgroud)

比...更干净

/users/{af54c891-69ba-4ddf-8cb6-00d368e58d77}/name
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么ASP.NET团队决定以这种方式实现ID?在尝试将其更改为int类型时,我是否只是短视?(也许我缺少一些好处.)

谢谢...

-ben

asp.net-mvc entity-framework owin asp.net-mvc-5 asp.net-identity

66
推荐指数
3
解决办法
4万
查看次数

ASP.NET MVC 4中的自定义成员身份和角色提供程序

我正在创建一个ASP.NET MVC 4 Web应用程序.我搜索了自定义会员资格,但我找不到好的资源或视频讲座.

他们中的大多数要么是过时的,要么是死链接.请问您能否就如何开始编写会员资格和角色提供者提供一些资源.

asp.net asp.net-mvc asp.net-mvc-4

18
推荐指数
1
解决办法
3万
查看次数

使用SQL脚本创建ASP.NET标识表

我试图将ASP.NET Identity合并到一个新的应用程序中,该应用程序当前使用SQL脚本来创建数据库模式.由于我们需要从其他表创建外键约束到用户表,因此非常希望ASP.NET标识表也在相同的脚本中创建.

我已经能够在IdentityModels.cs中创建的ApplicationUser类中扩展IdentityUser类

public class ApplicationUser : IdentityUser
{
    public ApplicationUser()
    {
        Sequence = 0;
        LastActivity = DateTime.Now;
    }

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int NumericId
    {
        get;
        set;
    }

    [MaxLength(50), Required]
    public string DisplayName
    {
        get;
        set;
    }

    [MaxLength(50), Required]
    public string Description
    {
        get;
        set;
    }

    [IntegerValidator(MinValue = 0), Required]
    public int Sequence
    {
        get;
        set;
    }

    [MaxLength(50)]
    public string ExternalRef
    {
        get;
        set;
    }

    public DateTime? LoggedOn
    {
        get;
        set;
    }

    public DateTime? LoggedOff
    {
        get;
        set;
    }

    public DateTime …
Run Code Online (Sandbox Code Playgroud)

sql-server entity-framework code-first asp.net-identity

13
推荐指数
1
解决办法
1万
查看次数