【问题标题】:ASP.NET IdentityASP.NET 标识
【发布时间】:2013-07-12 06:16:07
【问题描述】:

我目前正在构建一个新的 ASP.NET MVC 5 项目,我想在 9 月左右发布。我需要选择一个会员系统,但我目前对我应该采取哪个方向感到很困惑。当前的 SimpleMembership 运行良好,但显然与即将推出的 ASP.NET Identity 不兼容。另一方面,ASP.NET Identity 是全新的零文档,并且可以随时更改。最后,这里似乎使用了基于字符串的 ID,与 SimpleMembership 支持的基于整数的 ID 相比,这似乎是非常不必要的开销。我可以选择一种好的、面向未来的方法吗?

【问题讨论】:

  • 字符串格式的 guid 用于代替实际的 guid,以便更轻松地交换持久性机制,例如,如果您想使用不支持 guid 的 nosql 解决方案。 id 列是索引的,虽然索引 int 列的性能更好,但对于大多数应用程序来说差异可以忽略不计。
  • 请参阅stackoverflow.com/questions/19238621/…,了解使用 GUID 的原因。

标签: asp.net identity membership asp.net-mvc-5 asp.net-identity


【解决方案1】:

在我看来,如果您使用 asp.net mvc 5 开始您的项目,您应该使用新的会员系统,因为它与http://owin.org/ 标准很好地集成。

【讨论】:

  • 此外,我们正在添加更多教程,并且在 SO 上有很多支持。
【解决方案2】:

我也建议不要使用 SimpleMembership。您仍然可以在数据库中使用 int ID,您只需在插入数据库实体时使用 ToString() ID,即:

public class MyUser : IUser {
   [Key]
   int UserID { get; set; }

   string IUser.Id { get { return UserId.ToString(); } }
}

【讨论】:

    【解决方案3】:

    我要么使用最新版本的身份,要么完全构建您自己的帐户系统。 ASP.NET Identity 现在使用 GUID( NVARCHAR(128) - 在 db 中)作为 ID,但是如果您愿意,您仍然可以使用 int。我知道人们仍在使用身份 1.0 没有任何问题,我相信他们当时使用 int 作为 Id。

    无论是 int 还是 guid,Id 都不应该发生冲突。正如上面的帖子所说,你可以只是 Id.ToString();

    无论你走哪条路,我认为不会有太大的不同。

    【讨论】:

      【解决方案4】:

      我相信 ASP.NET 是一个非常好的框架,并且为应用程序提供了几乎所有必需的功能。它还提供了根据您的选择选择 Id 列类型的可行性。我在 ASP.NET 标识上创建了一个基本的包装器并发布了一个 nuget,以便它可以轻松使用。您可以在github查看代码

      【讨论】:

        猜你喜欢
        • 2015-06-16
        • 2017-02-12
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        相关资源
        最近更新 更多