Tim*_*ell 3 episerver episerver-6-r2
我们在EPiServer 6r2中建立了一个新的“访客组”,<body>如果用户在该组中,我们希望在站点的标签中添加一个css类,这样不同的组就会得到不同的站点设计。我试图找出当前访问者是否在 masterpage 文件的代码隐藏中的匹配组中,以便添加这个额外的类,并且无法让下面的代码返回除 false 之外的任何内容。
我不确定提到的角色名称是否是您在添加访问者组时在 CMS UI 中输入的名称。
保罗史密斯在博客上提出了一个解决方案,但我还没有能够让它返回任何东西false,而且从博客文章的唯一评论来看,我并不孤单。此链接中的代码示例 #1(这是我正在使用的):
using EPiServer.Personalization.VisitorGroups;
...
bool match = EPiServer.Security.PrincipalInfo.CurrentPrincipal
.IsInRole("My Visitor Group", SecurityEntityType.VisitorGroup);
Run Code Online (Sandbox Code Playgroud)
我找到了成员资格和角色提供者的开发人员指南,其中指出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 的编码有点像战争迷雾,我有点厌战。
通过浏览对象模型和猜测找到它。文档就这么多。
using EPiServer.Personalization.VisitorGroups;
using EPiServer.Security;
const string visitorGroupName = "Some users";
var groupHelper = new VisitorGroupHelper();
bool isPrincipalInGroup = groupHelper.IsPrincipalInGroup(
PrincipalInfo.CurrentPrincipal, visitorGroupName);
Run Code Online (Sandbox Code Playgroud)
在 EPiServer 6r2(又名 6.1)中测试和工作。
visitorGroupName创建/编辑访客组时,字符串必须与在 EPiServer 管理界面上的“名称”框中输入的字符串匹配。请看下面的截图:
