2016-09-21 58 views
1

我只是调查了ASP.NET Identity,这似乎是最近用于ASP.NET应用程序中用户身份验证的最佳解决方案(将所有ASP.NET Membership替换为过去)。ASP.NET身份 - 维护有关匿名用户的信息

我正在寻找一种解决方案,可以保留有关匿名用户的信息。 即使用户未通过身份验证,我们也可以收集并存储用户通过身份验证后可以存储的大部分个人资料数据。

即使用户是匿名的,是有意义的存储像数据:他是写在网站上(这样他就可以编辑它们的创建者)

  • 购物车
  • 评论
  • 各站点首选项(他的首选语言,和许多其他设置)

然后,当用户注册,我们可以提供给某些数据复制到他的新用户PR (或自动复制)取决于它是什么数据。

有没有可能通过ASP.NET身份来实现这种情况?看起来,当一个用户在ASP.NET Identity中匿名时,他不能拥有任何用户配置文件数据。

为了使用相同的表格存储所有这些信息与经过验证的用户相同,我们可能需要在系统中为每个访问该网站的新访客创建一个新用户,并执行一些操作,需要存储一些用户数据。然后,我们需要传递一些cookie标识符给用户,这样我们就可以始终将数据连接到用户,这可以看作是某种形式的认证(虽然对于实际用户是不可见的)。这样,访客用户实际上可以代表系统的已认证用户(也许他只是有一个特殊角色?),尽管据他所知,他是匿名的。

您对这种方法有什么看法? ASP.NET Identity有什么方法可以帮助解决这个问题?

我发现这两个相关堆栈溢出的问题,但我还没有找到我的答案在他们:


编辑:

I发现在ASP.NET中有一种叫做的匿名身份识别,这似乎解决了部分问题。

https://msdn.microsoft.com/en-us/library/91ka2e6a(v=vs.85).aspx

也许可以某种方式与ASP.NET身份集成?

EDIT2:正如在评论中指出,为匿名鉴定的文件似乎已经过时,这是相当可能的,微软不会把重点放在这么多的未来。与ASP.NET Identity或其他基于OWIN的解决方案配合使用的解决方案是首选。

+0

恐怕身份在这里帮不了你。这里没有内置的功能 - 你必须自己想出大部分的东西。但是,您可以使用一些OWIN Cookie中间件来处理声明和Cookie。 – trailmax

+1

我已经完成用OWIN身份验证Cookie。相关的部分可以在这里看到:https://github.com/trailmax/OwinADAuthentication/blob/master/ActiveDirectoryAuthentication/Models/AdAuthenticationService.cs#L82 – trailmax

+0

@trailmax:感谢您的回复。我喜欢ASP.NET Identity中的大部分功能并计划使用它们,因此我更关注如何将这些访客用户集成到ASP.NET Identity框架中。 –

回答

0

Asp.Net Identity没有这样的事情,即使通过髋关节IP或浏览器中的Cookie来识别匿名用户也是不安全的,您可以要求用户以非常小的信息或通过FB或Twitter进行注册尽可能缩短注册过程,稍后他可以完成他的个人资料,这样您将确保数据与实际个人资料相关联。

+0

从安全角度来看,这不是一个问题,不管cookie被盗或什么都没有关系,对于所有非常重要的操作,都需要进行适当的身份验证。如果我要求用户在Facebook上登录,然后才能将商品添加到购物车,它将大大伤害转化。还有,为什么你认为通过cookie识别用户是不安全的?不是ASP.NET身份也使用Cookie? –

+0

asp。net使用cookies作为保持用户会话的一种方式,并且避免请求他登录每个请求但肯定不会认证用户 –

+0

但是我可以窃取会话cookie并通过这样做来访问系统和用户的身份。我的观点是,使用cookie来识别匿名用户可以像使用cookie来识别用户的会话一样安全。 –

0

ASP.NET 配置文件属性允许您的应用程序跟踪并永久存储用户特定的信息。例如,用户可以指定邮政编码或最喜欢的配色方案,并且您的应用程序可以存储该信息并从应用程序中的任何位置检索该信息。 ASP.NET会自动将当前用户与用户帐户存储的个人信息(无论用户是匿名用户还是已登录用户)进行匹配。

配置配置文件属性

您将通过配置应用程序,以使配置文件属性开始。然后,您将定义要为每个用户跟踪的第一个属性。此属性名为PostalCode,将为匿名用户和登录用户进行跟踪。

来源:https://msdn.microsoft.com/en-us/library/taab950e.aspx

+0

这似乎没有更新(对于.NET的新版本),也没有提及那些在ASP.NET身份的任何地方。我认为所有这些都是ASP.NET Identity应该替代的旧会员相关库的一部分。我的目标是远离这些遗留的库,以便进行任何新的开发,因为看起来微软似乎只专注于支持OWIN基础架构之上的功能...... –