我们已成立了一个新的访客群组&#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的编码有点像战争迷雾,而且我有点厌倦战斗。
答案 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管理界面上的框。见下面的截图: