3

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

我不确定提到的角色名称是否是您在添加访客组时在 CMS UI 中输入的名称。

Paul Smith在博客上对此提出了一个解决方案,但我还没有让它返回任何东西false,而且从博客文章的唯一评论来看,我并不孤单。此链接中的代码示例#1(这是我正在使用的):

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

我找到了成员资格和角色提供者的开发人员指南,其中指出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 的编码有点像战争迷雾,我有点厌倦了战斗。

4

1 回答 1

6

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

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必须与在 EPiServer 管理界面上的“名称”框中输入的字符串匹配。请看下面的截图:

在此处输入图像描述

于 2014-06-30T15:55:58.303 回答