我正在尝试为Sitefinity实现自定义成员资格提供程序。到目前为止,实际的会员资格(身份验证,列出用户等)工作正常。我想要做的是在站点内为登录该提供商的任何人设置权限。例如,假设自定义提供程序被称为CustomerDBMembershipProvider
,并假设它从某种单独的用户名和密码存储库中获取记录。
我希望使用CustomerDBMembershipProvider
登录的任何人都可以访问该网站上仅限客户的页面。如何限制该页面,以便只有使用CustomerDBMembershipProvider
登录的人才能看到该页面?
答案 0 :(得分:0)
首先,我希望我能理解你的问题。我可以在这里想到两个选择
选项1
创建自定义角色提供程序,实现GetAllRoles,RoleExists,IsUserInRole,GetRolesForUser。抛出所有你可以保留的空方法,抛出新的NotSupportedException(); 在此角色提供程序中,您可以从自定义用户来源获取每个用户的角色列表。如果您没有自定义角色数据库,则可以对此角色提供程序进行硬编码以获得一个固定角色。
在web.config中将此自定义角色提供程序与sitefinity集成。
现在您应该在页面权限管理器中看到其他角色。您现在可以仅为受限制的页面提供对此角色的访问权限。
选项2。
使用此方法,每当将新用户添加到自定义源时,您需要将它们映射到在sitefinity中创建的新角色。如果您可以更改成员资格提供程序,则在ValidateUser函数中,验证用户后,可以将新创建的sitefinity角色添加到用户。然后,每次创建新用户时,您都不需要在sitefinitiy中手动映射角色。