Authentication Sitecore登录虚拟用户无法查看任何内容

Authentication Sitecore登录虚拟用户无法查看任何内容,authentication,sitecore,rights,Authentication,Sitecore,Rights,我已经编写了一个登录页面,其中有一个Sitecore虚拟用户登录。成功登录后,他将被引导到起始页,该页继承自Sitecore.Sitecore.admin.AdminPage。通过这种方式,我确保只有当用户以Sitecore虚拟用户身份登录时,才能访问这些页面 问题是,在我为登录的Virtual用户分配sitecore/developer角色之前,他看不到任何内容,我想这不是应该做的。我尝试分配一个角色,授予他对我希望他看到的内容节点的访问权,但这不起作用。他被重定向回登录页面 我错过了什么 编

我已经编写了一个登录页面,其中有一个Sitecore虚拟用户登录。成功登录后,他将被引导到起始页,该页继承自Sitecore.Sitecore.admin.AdminPage。通过这种方式,我确保只有当用户以Sitecore虚拟用户身份登录时,才能访问这些页面

问题是,在我为登录的Virtual用户分配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)
    { 
        ...
    }

    ...
}

您可以尝试创建一个从sitecore/作者角色继承的自定义角色,该角色应具有用户对起始页的访问权限,然后您可以根据您的要求自定义新角色的权限和限制。

您需要替换CheckSecurity以执行所需的安全权限检查。您传入的“true”表示代码将检查开发人员角色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登录。

您不需要编写安全检查代码,因为假定您已经设置了权限和角色,Sitecore将为您执行此操作。假设您有一个extranet域,则在该域中创建一个角色,所有注册用户都应自动继承该角色。该角色应有权访问该站点,而除登录页面外,应拒绝外部网/匿名用户


我是否缺少一些要求?

您是否能够提供从AdminPage继承的起始页的代码?根据我的记忆,AdminPage在默认情况下限制太多,因此,除非您覆盖权限模型,否则在检查权限时,您可能会遇到AdminPage安全模型的默认行为。添加了我的安全aspx页面的代码。您能给我一个如何覆盖CheckSecurity的示例吗?Hey@SpaceJump,我已经更新了我的答案。我不应该使用override这个词,因为它意味着特定的.NET实现。通常,您不需要执行AdminPage所做的操作。不从AdminPage继承可能更简单。