我编写了一个登录页面,其中一个Sitecore虚拟用户已登录。成功登录后,他将被定向到继承自Sitecore.sitecore.admin.AdminPage
的起始页面。这样,我确保只有在用户以Sitecore(虚拟)用户身份登录时才能访问这些页面。
问题是,在我分配给sitecore/developer
角色之前,登录的虚拟用户看不到任何内容,这不是我猜的方式。我尝试分配一个角色,授予我希望他看到的内容节点的访问权限,但这不起作用。他被重定向回登录页面。
我错过了什么?
修改 这是我的安全页面的代码:
public partial class MainPage : Sitecore.sitecore.admin.AdminPage
{
Sitecore.Security.Accounts.User currentUser = Sitecore.Context.User;
protected override void OnInit(EventArgs e)
{
base.CheckSecurity(true);
base.OnInit(e);
}
private void Page_Load(object sender, System.EventArgs e)
{
...
}
...
}
答案 0 :(得分:1)
您需要替换CheckSecurity以执行所需的安全权限检查。真实的'您传入的意味着代码将检查Developer角色(false表示只有管理员可以进入)。
这是管理页面的默认行为。如果您想要一个不同的行为(即非管理员或非开发人员能够访问此页面),那么您可能要么从错误的页面继承,要么应该调用与CheckSecurity方法不同的方法来检查您的用户将拥有的角色。
自定义支票的示例:
protected override void OnInit(EventArgs e)
{
this.CheckCustomAccess("extranet\RoleName");
base.OnInit(e);
}
protected virtual void CheckCustomAccess(string roleName)
{
//Do your access check.
}
<强>但是:强> 您访问此页面的用户既不是管理员也不是开发人员,这意味着您可能不应该使用AdminPage作为基页。您可能应该直接从Page类继承。 AdminPage不会给您带来任何好处,因为它专门用于检查管理员或开发人员的安全性。
在这种情况下,您可能希望执行类似于AdminPage逻辑的操作,但只检查您想要的角色,然后在没有正确权限的情况下重定向到您的Extranet登录。
答案 1 :(得分:0)
您可以尝试创建一个继承自sitecore/Author
角色的自定义角色,该角色应该允许用户访问起始页面,然后您可以根据您的要求自定义新角色的权限和限制
答案 2 :(得分:0)
您不需要对安全检查进行编码,因为Sitecore会为您设置权限和角色。假设你有一个外联网域名,那么在那里创建一个所有你注册的角色&#34;用户应自动继承。该角色应该可以访问该站点,而除了登录页面外,应该拒绝外联网/匿名。
我在这里错过了一些要求吗?