umbraco身份验证

问题描述:

我有一个现有的社区后端,我喜欢使用Umbraco作为我的表示层。如何使用.Net表单身份验证实现登录/注销? (我不想使用成员功能)。我有不同类型的用户可以访问不同类型的页面。我怎样才能控制这个?用户控制?umbraco身份验证

Umbraco使用ASP.NET成员/角色提供程序模型获取成员资格系统,这是一个非常简单的步骤,将默认的一个交换为您自己的实现。过去我曾经在这里做过这些工作,我想根据Active Directory存储对成员进行身份验证,但我无法想象要对自定义数据库进行身份验证会更困难。

这样做的好处是您可以与Umbraco会员系统完全集成,并且通过使用自定义角色提供程序,编辑人员将能够使用内置的页面编辑功能来限制页面,而不必使用钩子您自己的安全控制。

您应该能够通过扩展UmbracoMembershipProvider类并覆盖的ValidateUser方法来创建一个简单的成员提供。我自己并没有这样做,但我知道其他人。

要针对自定义角色提供者进行身份验证,您需要创建一个从RoleProvider派生的类。你会想要替换的方法是 - 的isUserInRoleFindUsersInRoleGetAllRolesGetRolesForUser

下面是Scott Guthrie blog post的链接,它提供了有关提供者API的更多信息,而且您将不需要知道这些信息,包括默认提供者的源代码。

+0

请问你心中对如何创建自己的会员/角色提供者模型详细点吗? – 2009-09-30 05:45:10

+0

已经添加了一些有关提供者模型的更多信息,希望能够帮助您。 – richeym 2009-09-30 09:45:17

我在我的umbraco网站上使用了两种方法。这两种方法都包括用于登录和注销的用户控件,它们负责使用自定义解决方案对用户进行身份验证,并分别清除凭证。对于这两种方法,我还补充了一个umbracoMembersOnly属性,用于我想保护的任何文档类型。

在第一种方法中,我让每个单独的模板检查用户是否被限制访问。为了抽象这一点,我创建了一个site.com类,其中包含isMember或isLoggedIn方法,该方法可在站点范围内使用,并且可以从XSLT或用户控件宏中调用。这种方法的好处是我可以在每个模板上定制自定义消息,而不仅仅是提供相同的拒绝访问页面。

第二种方法 - 我现在喜欢的 - 如果要创建一个权限宏,它负责检查用户访问任何页面的权限(即检查umbracoMembersOnly属性,如果为true,则检查会话变量)。该宏被包含在主模板中,并在每个模板上执行。如果用户没有权限访问当前页面,我将重定向到同一页面,但是在查询字符串后附加了?alttemplate = RestrictedPage或类似内容。 (请确保您的权限宏检查查询字符串中的alttemplate = RestrictedPage,否则您将以无限循环的重定向结束。)