如果请求与EPiServer访客组匹配,如何签入代码

时间:2014-06-26 16:20:15

标签: episerver episerver-6-r2

我们已成立了一个新的访客群组&#34;在EPiServer 6r2中,如果用户在该组中,我们希望将css类添加到站点的<body>标记中,以便不同的组获得不同的站点设计。我试图找出当前访问者是否在母版页文件的代码隐藏中的匹配组中,以便添加这个额外的类,并且无法获得以下代码以返回除false之外的任何内容。

我不确定提到的角色名称是否是您在添加访问者群组时在CMS用户界面中输入的名称。

保罗·史密斯blogged a proposed solution to this但是我还没有能够让它返回false以外的任何东西,并且从博客文章的唯一评论判断我并不孤单。代码示例#1来自此链接(我正在使用的那个):

 using EPiServer.Personalization.VisitorGroups;
 ...
 bool match = EPiServer.Security.PrincipalInfo.CurrentPrincipal
              .IsInRole("My Visitor Group", SecurityEntityType.VisitorGroup);

我发现developer guide to membership and role providers表明必须将replacePrincipal设置为true才能使正确的主体到位。我查了一下,我的配置就是这种情况。


文档

奇怪的是,我从http://sdk.episerver.com/搜索了6r2文档,并且根本无法找到IPrincipalExtensions的文档,即使我在6.2中的对象浏览器中看到该类。在我的sln。详情:大会EPiServer.ApplicationModules - C:\Windows\assembly\GAC_MSIL\EPiServer.ApplicationModules\6.2.267.1__8fe83dea738b45b7\EPiServer.ApplicationModules.dll - public static bool IsInRole(this System.Security.Principal.IPrincipal principal, string role, EPiServer.Security.SecurityEntityType type)     EPiServer.Personalization.VisitorGroups.IPrinicipalExtensions

的成员

如果您发现错误或者我错过了任何内容,请发表评论,因为EPiServer的编码有点像战争迷雾,而且我有点厌倦战斗。

1 个答案:

答案 0 :(得分:4)

通过浏览对象模型和猜测找到它。这么多文档。

using EPiServer.Personalization.VisitorGroups;
using EPiServer.Security;

const string visitorGroupName = "Some users";
var groupHelper = new VisitorGroupHelper();
bool isPrincipalInGroup = groupHelper.IsPrincipalInGroup(
           PrincipalInfo.CurrentPrincipal, visitorGroupName);

在EPiServer 6r2(又名6.1)中测试并使用。

字符串visitorGroupName必须匹配输入&#34;名称&#34;的字符串。创建/编辑访问者组时,EPiServer管理界面上的框。见下面的截图:

enter image description here