c# - Simplemembership 实现匿名用户方法

标签 c# asp.net-mvc-4 simplemembership

Jon Galloway 进行了概述 - http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx - ASP.NET MVC 4 中的新成员功能。Internet 项目模板从 ASP.NET 的核心成员提供程序转移到 SimpleMembershipProvider 和 OAuth 的世界。

关于 simplemembership,有谁知道是否可以使用开源来扩展它 http://aspnetwebstack.codeplex.com/为了能够允许匿名用户存储在数据库中——可能在 userprofile 表中?

我检查了 http://msdn.microsoft.com/en-us/library/webmatrix.webdata.simplemembershipprovider simplemembership provider 类,但它的方法没有引用匿名标识。

如果不可能,是否有人知道有关构建 ExtendedMembershipProvider 的信息? 兄弟!

更新信息:来自 pro.asp.netmvc3 书。关于认证授权-

启用匿名配置文件: 默认情况下,配置文件数据仅对经过身份验证的用户可用,如果我们在当前用户未登录时尝试写入配置文件属性,则会抛出异常。我们可以通过启用对匿名配置文件的支持来更改此设置,如如 list 22-17 所示。 启用匿名识别后,ASP.NET 框架将通过为匿名用户提供一个名为 .ASPXANONYMOUS 的 cookie 来跟踪匿名用户,该 cookie 在 10,000 分钟(大约 70 天)后过期。我们 可以通过将 allowAnonymous 属性设置为 true 来启用对配置文件属性的匿名支持;在列表中,我们启用了对 Name 和 City 属性的匿名支持。 启用匿名配置文件可以读取和写入未经身份验证的配置文件数据 用户,但请注意,每个未经身份验证的访问者都会在配置文件数据库中自动创建一个用户帐户。

我想在简单的成员资格中复制它。我不想使用旧的配置文件系统 b,因为它在 blob 中存储值。 brgds!.

**更新: list 22-17: list 22-17。启用对匿名配置文件的支持

<configuration>
<system.web>
<anonymousIdentification enabled="true"/>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ApplicationServices"
applicationName="/" />
</providers>
<properties>
<add name="Name" type="String" allowAnonymous="true"/>
<group name="Address">
<add name="Street" type="String"/>
<add name="City" type="String" allowAnonymous="true"/>
<add name="ZipCode" type="String"/>
<add name="State" type="String"/>
</group>
</properties>
</profile>
</system.web>
</configuration>

启用匿名识别后,ASP.NET 框架将通过以下方式跟踪匿名用户 给他们一个名为 .ASPXANONYMOUS 的 cookie,该 cookie 在 10,000 分钟(大约 70 天)后过期。我们 可以通过将 allowAnonymous 属性设置为 true 来启用对配置文件属性的匿名支持;在 我们为 Name 和 City 属性启用了匿名支持的列表。**

最佳答案

我认为您描述的场景是用户在应用程序中注册,但可能未确认、未完成个人资料或其他一些条件;在他们完成这些要求之前,他们被视为匿名用户,对应用程序的访问权限有限。我假设用户输入了一些最少的信息来识别用户,例如用户名和密码。

处理此问题的最简单方法可能是拥有一个“匿名”角色,所有新用户都会自动分配给该角色。现在您可以使用基本的表单例份验证方法来限制对 Controller /操作的访问,使用 AuthorizeAttribute .一旦用户完成了非匿名的标准,您就可以切换他们的角色,或者只添加一个新角色以授予他们完全访问权限。

如果用户是真正匿名的并且您无法识别他们,您仍然会使用基于角色的授权和基于表单的身份验证,通过使用 AllowAnonymousAttribute 修饰 Controller /操作来提供受限访问。对于您要允许访问的区域。

根据更新的问题更新答案

看看 answer in this ASP.NET Forum .基本上它的意思是您可以通过管理您自己的 cookie 和您自己的数据库模式来实现您的目标,但它不会作为 SimpleMembership 提供程序的一部分工作。

关于c# - Simplemembership 实现匿名用户方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13928771/

相关文章:

c# - Windows 8 应用程序 - MediaElement 不播放 ".wmv"文件

c# - 在 Visual Studio 中复制现有 ASPX 页面的最佳方法

c# - SqlConnection.CacheConnectionStringProperties().NET 代码中的 NullReferenceException

asp.net-mvc - MVC 子菜单

jquery - 如何在 jquery 中动态自动完成

asp.net-mvc-3 - SimpleMembership MVC3 无法加载文件或程序集 WebMatrix.Data

c# - 为什么当我想注册第二个用户时 MVC 简单成员(member) token 返回 null?

c# - 访问 Azure Service Fabric 有状态服务状态

asp.net-mvc-4 - 如何使用 ServiceStack 保护 Elmah