登录虚拟用户的Sitecore无法看到任何内容

时间:2017-11-24 12:31:07

标签: login sitecore access rights

我编写了一个登录页面,其中一个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)
    { 
        ...
    }

    ...
}

3 个答案:

答案 0 :(得分:1)

您需要替换CheckSecurity以执行所需的安全权限检查。真实的'您传入的意味着代码将检查Developer角色(false表示只有管理员可以进入)。

请参阅此相关帖子:https://sitecore.stackexchange.com/questions/2965/creating-a-custom-sitecore-admin-page-to-create-a-report

这是管理页面的默认行为。如果您想要一个不同的行为(即非管理员或非开发人员能够访问此页面),那么您可能要么从错误的页面继承,要么应该调用与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;用户应自动继承。该角色应该可以访问该站点,而除了登录页面外,应该拒绝外联网/匿名。

我在这里错过了一些要求吗?