2015-08-19 4 views
4

Я хочу, чтобы проверить, если пункт Sitecore применяла любые права доступа или нет, так что я имею в виду проверки, если поле безопасности имеет значение, т.е.Sitecore прав Пункт доступа

item.Fields["__Security"].Value 

Является ли это правильный путь проверяя, есть ли у элемента права доступа или есть ли другой способ сделать это?

ответ

5

Да, в __Security поле являются права сохранены.

Вы можете использовать: item.Security.GetAccessRules();

var accessRules = item.Security.GetAccessRules(); 
if (accessRules != null) 
{ 
    foreach (var rule in accessRules) 
    { 
     var name = rule.Account.Name; 
     var comment = rule.AccessRight.Comment; 
     var permiss = rule.SecurityPermission; 
    } 
} 
2

Такого рода вещи чувствует себя более более API-иш

foreach(Role role in RolesInRolesManager.GetAllRoles()) 
{ 
    bool hasReadAccess= itemUnderTest.Security.CanRead(role); 
} 

В самом деле, посмотрите на все методы Item.Security

+0

Я могу проверить права доступа в отношении пользователя или роли, но в моем случае я просто нужно знать, если существуют права доступа, применяемые или нет, код, который я упомянул в правильный способ проверить? –

+2

Затем, как справедливо говорит Ян - item.Security.GetAccessRules() –

Смежные вопросы