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