ASP.NET标识 - 匿名配置文件

时间:2015-06-28 23:23:31

标签: c# asp.net-mvc asp.net-identity

我想使用匿名配置文件来存储和使用未经过身份验证的配置文件数据。页面上描述了如何启用匿名配置文件 https://msdn.microsoft.com/en-us/library/ewfkf772(v=vs.100).aspx

  

个人资料也可以与匿名用户合作。支持匿名   默认情况下不启用配置文件,因此您必须明确启用它。   此外,在Web.config中定义配置文件属性时   文件,您必须明确地使它们单独可用   匿名用户。配置文件属性不支持匿名访问   默认,因为配置文件可能设计为使用经过身份验证   用户和许多属性可能与个人有关   匿名用户无法获得的信息。

但我不确定,我可以为匿名用户使用个人资料数据。它说,默认情况下我不能使用配置文件数据。但是默认情况下,我是否能够为匿名用户使用配置文件数据,如果“是”,那么我该怎么办? 我很困惑......

1 个答案:

答案 0 :(得分:3)

答案

匿名配置文件是可能的。他们让我们将个人资料数据(例如邮政编码)与匿名用户相关联。当然,配置文件数据只是相关的,而ASP.NET可以通过cookie(或查询字符串参数)识别匿名用户,如下所示:

Anonymous Cookie

  

但我不确定,我可以为匿名用户使用个人资料数据。

我们可以。我刚刚使用ASP.NET MVC在本地计算机上对此进行了测试。

  

......如果"是"那我该怎么办?

首先,将以下内容添加到web.config文件的()部分。它告诉ASP.NET跟踪匿名用户,添加单个配置文件属性,并使用我们的默认数据库连接配置提供程序(假设我们有一个名为system.web的连接字符串。)

DefaultConnection

一旦我们完成了这项工作,ASP.NET将允许我们按如下方式获取/设置配置文件属性:

<anonymousIdentification enabled="true" />   
<profile defaultProvider="SqlProvider" >
  <properties>
    <add name="PostalCode"
      type="System.String"
      allowAnonymous="true" />               
  </properties>
  <providers>
    <clear />
    <add name="SqlProvider"
         type="System.Web.Profile.SqlProfileProvider"
         connectionStringName="DefaultConnection" />
  </providers>      
</profile>  

注意:您必须在数据库上设置配置文件才能使用(否则ASP.NET会抱怨它无法找到存储过程。)设置配置文件的一种方法是在数据库上运行// get var postalCode = Profile.GetPropertyValue("PostalCode") as string; // set Profile.SetPropertyValue("PostalCode", "V8K 1B1"); Profile.Save(); ,如下所示。

aspnet_regsql

有关aspnet_regsql -S "myDbServer" -A p -d "myDbName" -E 标志的详细信息,请运行aspnet_regsql以获取文档。 aspnet_regsql -?设置了配置文件,-A p使用了集成安全性。

另见:

对于其他方法和更多细节,这里有一些其他链接: