使用SQL查询检查Sitecore访问

使用SQL查询检查Sitecore访问,sitecore,Sitecore,我正在尝试编写SQL查询,以检查Sitecore中用户的“写入”访问权限 例如,假设我想检查John的访问权限,我们目前在Sitecore中有40个网站使用其多站点管理器。除了从用户管理器中执行此操作外,我还希望借助SQL来执行此操作 你知道我可以用来检查访问权限的数据库吗 除此之外,代码中还有一点错误。但我想,一旦输入正确的数据库名称,它就会被修复 提前谢谢大家,, Vaibhav使用SQL查询检查用户访问权限是一种非常糟糕的做法 要检查用户权限,您需要使用上述Sitecore类: name

我正在尝试编写SQL查询,以检查Sitecore中用户的“写入”访问权限

例如,假设我想检查
John
的访问权限,我们目前在Sitecore中有40个网站使用其多站点管理器。除了从用户管理器中执行此操作外,我还希望借助SQL来执行此操作

你知道我可以用来检查访问权限的数据库吗

除此之外,代码中还有一点错误。但我想,一旦输入正确的数据库名称,它就会被修复

提前谢谢大家,,
Vaibhav使用SQL查询检查用户访问权限是一种非常糟糕的做法

要检查用户权限,您需要使用上述Sitecore类:

 namespace Sitecore.Security.AccessControl
 {
   public class ItemAccess
   {
    public ItemAccess(Item item);

    public virtual bool CanAdd(BranchId branchId);
    public virtual bool CanAdd(TemplateID templateID);
    public virtual bool CanAdmin();
    public virtual bool CanCopyTo(Item destination);
    public virtual bool CanCreate();
    public virtual bool CanDelete();
    public virtual bool CanDuplicate();
    public virtual bool CanMoveTo(Item destination);
    public virtual bool CanRead();
    public virtual bool CanReadLanguage();
    public virtual bool CanRemoveVersion();
    public virtual bool CanRename();
    public virtual bool CanWrite();
    public virtual bool CanWriteLanguage();
}
}

要检查用户是否具有写入权限,请使用下一个代码:

 public bool CheckWriteAccess(string itemId, string UserName)
    {
        bool WriteAccess = false;

        if (Sitecore.Data.ID.IsID(itemId))
        {
            Item item = Sitecore.Context.Database.GetItem(Sitecore.Data.ID.Parse(itemId));
            if (item != null)
            {
                Sitecore.Security.Domains.Domain domain = Sitecore.Context.Domain;
                string domainUser = domain.Name + @"\" + UserName;
                if (Sitecore.Security.Accounts.User.Exists(domainUser))
                {
                    Sitecore.Security.Accounts.User user = Sitecore.Security.Accounts.User.FromName(domainUser, false);
                    // UserSwitcher allows below code to run under a specific user 
                    using (new Sitecore.Security.Accounts.UserSwitcher(user))
                    {
                        WriteAccess = item.Access.CanWrite();
                    }
                }
            }
        }
        return WriteAccess;
    }

为什么需要它?使用sql很难,从成员资格表中,您可以获得角色,并且在安全字段中的Sitecore项中有权限,很难使用sql进行解析/解释。也许你可以用另一种方式。然后知道你为什么想要它会有帮助。