SDN中的Faking User Roles文档似乎完全符合我的需要。我有几个“角色”,我可以通过存储过程调用访问我无法控制,只读,通过CRM我无法直接访问。
不幸的是,我找不到AddRole方法,甚至找不到类名为UserItem的方法。 Sitecore 6.2中是否存在此功能?如果是这样,它在哪里?
答案 0 :(得分:3)
您所引用的代码似乎是以前版本的Sitecore,我猜,5.3.X。安全模型已从6.0开始更改,以利用ASP.NET标准安全模型。
为了从其他来源向Sitecore live添加额外角色,您应该实现额外的角色提供程序,将其添加到web.config并启用切换器。 This article会给你一个很好的概述。请记住一般事项:Sitecore安全性(从6.0开始)很大程度上依赖于ASP.NET安全性,因此在Sitecore中可以实现ASP.NET中的可能性。
如果有一天您直接了解CRM,您应该能够使用标准Sitecore CRM security provider从CRM获取联系人和群组。
希望这有帮助。
答案 1 :(得分:2)
如果不进行检查,我相当确定您的SDN参考仅适用于Sitecore 5.x.整个安全模型在6.x中重做,没有向后兼容性。
如果我明白你想要做什么,那么你的任务就相当简单了。您需要按照MSDN(http://msdn.microsoft.com/en-us/library/aa478950.aspx)上的指示,按照标准ASP.NET创建100%的RoleProvider。
接下来,您将其连接到Sitecore解决方案并将Sitecore配置为“切换器”模式。
<roleManager defaultProvider="switcher" enabled="true">
<providers>
<clear/>
<add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="sql" raiseEvents="true"/>
<add name="sql" type="System.Web.Security.SqlRoleProvider" connectionStringName="core" applicationName="sitecore"/>
<add name="your" type="RoleProvider, Here" applicationName="sitecore"/>
<add name="switcher" type="Sitecore.Security.SwitchingRoleProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/roleManager"/>
</providers>
这或多或少都是如此。您的角色现在将像Sitecore中的任何和所有其他角色一样显示,并且可以根据您的需要分配给用户和/或角色。
答案 2 :(得分:2)
虽然其他解决方案很好,但他们没有回答这个问题。
虚拟用户功能在Sitecore 6中仍然存在,但它已移至AuthenticationManager类。我自己也发现了,因为它确实解决了其他方法中的许多限制。
这是您最好的参考点,您可以在here中找到一个很好的例子。
那么,这种方法有用吗?
当您使用多个提供程序时,它非常有用,特别是当您使用高级Active Directory连接类型时。
例如,我们有一种情况,我们针对2个不同的活动目录对用户和角色进行身份验证,但我们希望允许每个角色在登录后应用于用户。您认为可以只分配角色从一个AD到用户通过其他AD验证,但当然不是..我们无法直接将“广告”域角色添加到“ad2”用户,因此我们动态地将相应角色从Sitecore域添加到虚拟在sitecore域下创建的用户。他们现在可以访问由“广告”域和“ad2”域驱动的功能。
我有一个可爱的小visio图表,用漂亮的颜色解释整个事情,唉我无法附上。
答案 3 :(得分:-1)
这对SDN(sdn.sitecore.net)来说是一个很好的问题。 对于Virtual Users,请查看AuthenticationManager类。要管理用户和角色,请查看Sitecore.Security.Accounts命名空间。