ASP.NET Identity 2是否支持匿名用户?

Jam*_*mes 9 c# asp.net-mvc asp.net-mvc-5 asp.net-identity

我想允许匿名/尚未注册和注册的用户在我的网站上发布.

Posts (table)
- Id (int)
- Subject (nvarchar)
- Body (nvarchar)
- UserId (uniqueidentifier)
Run Code Online (Sandbox Code Playgroud)

该项目使用最新的MS技术(ASP.NET MVC 5 +,C#...)我应该怎么做呢?

ASP.NET Identity甚至是正确的解决方案吗?

这些之间有什么区别:

  • ASP.NET身份
  • SimpleMembership
  • 会员提供者

更新 我需要能够区分尚未注册的用户并在数据库中记录他们的帖子.

更新2 然后可以选择迁移到已注册的帐户.就像stackoverflow用于允许匿名用户一样.这样的东西,但与ASP.NET Identitfy兼容 http://msdn.microsoft.com/en-us/library/ewfkf772(v=vs.100).aspx

Chr*_*att 5

ASP.NET Identity是ASP.NET中身份验证的最新版本。它的前身是SimpleMembership,它本身就是在旧的ASP.NET Auth上进行改进的尝试。成员资格提供程序不是单独的身份验证系统,而是一种通过附加功能来引导ASP.NET Auth或SimpleMembership的方法。如果您具有默认值未涵盖的特定登录方案,则可以创建一个成员资格提供程序,该程序将允许ASP.NET与该系统进行接口。

ASP.NET Identity取代了所有其他内容,并且不使用成员资格提供程序。相反,它为身份验证提供了非常可扩展的基础,通过使用标准API,您几乎可以按照自己喜欢的任何方式自定义身份验证。它还对OAuth和外部登录提供程序提供了更强大的支持,并且可以更好地与Active Directory(尤其是云中的Azure版本)等接口。

如果您要开始一个新项目,请使用Identity。如果说微软在过去似乎每周使用一种身份验证方法,那么在可预见的将来保持这种状态将有些危险,但是从我个人的工作经验来看,他们似乎终于正确了。我认为您只会看到不断完善和改进,而不是完整的替代品。


Dav*_*ang 5

我想回答一个原始问题:“我需要能够区分尚未注册的用户并将他们的帖子记录在数据库中。”。

我之前使用过 Simple Membership,我使用的是 Asp.Net Identity Framework 2.2.1。在这两种情况下,我都使用匿名身份来区分尚未注册的用户和经过身份验证的用户。

  1. 通过添加 .config 在您的 Web.config 中启用匿名标识<anonymousIdentification enabled="true" cookieName="YOUR_COOKIE_FOR_ANONYMOUS_IDENTIFICATION" />
  2. 您可以通过 获取匿名 ID Request.AnonymousID。该 id 是字符串格式的 GUID。
  3. 正如其他用户所提到的,您可以使用任何您想要的身份系统,只需记住在注销过程中清除匿名 ID。通常在用户成功通过身份验证后,您将用户名/用户 ID 与匿名 ID 保存到持久性存储中。通过在用户注销时清除anonymousId,您可以确保其他经过身份验证的用户将无法与相同的anonymousId 关联。
  4. 您可以通过 清除anonymousId AnonymousIdentificationModule.ClearAnonymousIdentifier()。注意:AnonymousIdentificationModule在 System.Web.Security 程序集中。您可以添加 System.Web 的引用或使用 CTRL + "。" 在AnonymousIdentificationModule你的代码在System.Web.Security带来。