自定义成员资格提供程序的Sitefinity权限

时间:2014-06-23 04:26:01

标签: c# asp.net sitefinity

我正在尝试为Sitefinity实现自定义成员资格提供程序。到目前为止,实际的会员资格(身份验证,列出用户等)工作正常。我想要做的是在站点内为登录该提供商的任何人设置权限。例如,假设自定义提供程序被称为CustomerDBMembershipProvider,并假设它从某种单独的用户名和密码存储库中获取记录。

我希望使用CustomerDBMembershipProvider登录的任何人都可以访问该网站上仅限客户的页面。如何限制该页面,以便只有使用CustomerDBMembershipProvider登录的人才能看到该页面?

1 个答案:

答案 0 :(得分:0)

首先,我希望我能理解你的问题。我可以在这里想到两个选择

选项1

  1. 创建自定义角色提供程序,实现GetAllRoles,RoleExists,IsUserInRole,GetRolesForUser。抛出所有你可以保留的空方法,抛出新的NotSupportedException(); 在此角色提供程序中,您可以从自定义用户来源获取每个用户的角色列表。如果您没有自定义角色数据库,则可以对此角色提供程序进行硬编码以获得一个固定角色。

  2. 在web.config中将此自定义角色提供程序与sitefinity集成。

  3. 现在您应该在页面权限管理器中看到其他角色。您现在可以仅为受限制的页面提供对此角色的访问权限。

  4. 选项2。

    1. 在sitefinity中创建新角色
    2. 为角色分配用户。这里在提供者下拉列表中选择您的提供者CustomerDBMembershipProvider。将所有用户分配到此角色。
    3. 更改所需页面的权限以仅允许此新角色。
    4. 使用此方法,每当将新用户添加到自定义源时,您需要将它们映射到在sitefinity中创建的新角色。如果您可以更改成员资格提供程序,则在ValidateUser函数中,验证用户后,可以将新创建​​的sitefinity角色添加到用户。然后,每次创建新用户时,您都不需要在sitefinitiy中手动映射角色。