【发布时间】:2016-09-21 10:49:43
【问题描述】:
我只是在研究ASP.NET Identity,这似乎是当今 ASP.NET 应用程序中用户身份验证最可取的解决方案(替换过去的所有 ASP.NET 成员资格)。
我正在寻找一种可以维护匿名用户信息的解决方案。 即使用户未通过身份验证,我们也可以收集和存储大部分个人资料数据,如果用户通过身份验证,我们可以存储这些数据。
即使用户是匿名的,存储以下数据也是有意义的:
- 购物车
- cmets 他写在网站上(这样他就可以作为它们的创建者编辑它们)
- 各种网站偏好(他的首选语言和许多其他设置)
然后,当用户注册时,我们可以提供将其中一些数据复制到他的新用户配置文件中(或自动复制),具体取决于它是什么数据。
是否有可能用 ASP.NET Identity 实现这种场景? 似乎当用户在 ASP.NET Identity 中是匿名的时,他无法拥有任何用户配置文件数据。
为了使用相同的表来存储所有这些信息作为经过身份验证的用户,我们可能需要在系统中为每个来到站点的新访问者创建一个新用户,并执行一些需要存储某些用户的操作数据。
之后,我们需要将一些 cookie 标识符传递给用户,以便我们始终可以将数据连接到用户,这可以看作是某种形式的身份验证(尽管对实际用户不可见)。这样,来宾用户实际上可以代表系统的经过身份验证的用户(也许他只是有一个特殊的角色?),尽管据他所知他是匿名的。
您如何看待这种方法? ASP.NET Identity 有什么方法可以帮助解决这个问题吗?
我找到了这两个相关的 Stack Overflow 问题,但我没有在其中找到答案:
编辑:
我发现在 ASP.NET 中有一种称为匿名识别的机制似乎可以解决部分问题。
https://msdn.microsoft.com/en-us/library/91ka2e6a(v=vs.85).aspx
也许它可以以某种方式与 ASP.NET Identity 集成?
Edit2: 如 cmets 所述,匿名识别 的文档似乎已经过时,而且微软很可能在未来不会过多关注这一点.首选使用 ASP.NET Identity 或其他基于 OWIN 的解决方案的解决方案。
【问题讨论】:
-
恐怕身份在这里帮不了你太多。这里没有内置功能——你必须自己想出大部分东西。但是,您可以使用一些 OWIN cookie 中间件来处理声明和 cookie。
-
我已经使用 OWIN 完成了用户身份验证 cookie 而没有身份。相关部分可以看这里:github.com/trailmax/OwinADAuthentication/blob/master/…
-
@trailmax:感谢您的回复。我喜欢 ASP.NET Identity 中的大部分功能并计划使用它们,因此我更多地研究如何将这些来宾用户集成到 ASP.NET Identity 框架中。
-
我想更多的是在不涉及身份的情况下从 OWIN 向匿名用户提供 cookie,但放置一些标识符,您可以将这些标识符与您存储的有关这些用户的信息相关联。但是一旦他们注册 - 检查该相关 ID 是否存在 - 并检索相关数据并复制到实际记录信息。
-
我真的认为在这种情况下,你会与身份抗争,而不是它给你带来的好处。我会遇到所需的电子邮件、用户名等。
标签: asp.net asp.net-mvc asp.net-identity