【发布时间】:2015-01-05 18:11:14
【问题描述】:
我需要知道具有特定角色的用户是否可以通过仅使用 Sitecore 数据库表而不使用 Sitecore API 来访问特定项目。所以我的问题是它存储在哪个表和哪个列中?
【问题讨论】:
标签: sitecore sitecore6 sitecore7
我需要知道具有特定角色的用户是否可以通过仅使用 Sitecore 数据库表而不使用 Sitecore API 来访问特定项目。所以我的问题是它存储在哪个表和哪个列中?
【问题讨论】:
标签: sitecore sitecore6 sitecore7
安全性针对__Security 字段中的单个项目存储。这是一个共享字段,因此将在SharedFields 表中。安全信息实际上是一个管道分隔的列表。注意:不建议直接访问架构,因为 Sitecore 可能会自行决定更改。
下面的 SQL 将获得数据库中所有项目的安全性,根据需要更新 where 子句以获得您感兴趣的项目的安全性。
SELECT Id, ItemId, FieldId, Value, Created, Updated
FROM SharedFields
WHERE FieldId = '{DEC8D2D5-E3CF-48B6-A653-8E69E2716641}' /* Guid is the ID of the __Security field */
结果:
8AA88E96-2110-4BE1-A554-BAE9C60536FF 418B3B60-61E2-4E6C-B98F-061C88239087 DEC8D2D5-E3CF-48B6-A653-8E69E2716641 au|sitecore\agency|pd|-item:write|-item:admin|!*|+item:read|-item:delete|-item:create|-item:rename|pe|-item:write|-item:admin|!*|+item:read|-item:delete|-item:create|-item:rename| 2011-03-07 11:48:14.563 2011-03-07 11:48:14.563
06A6DB6C-6DEF-40E0-8CF8-8E179888DBB8 F1AF5582-B6A2-4435-8307-2837C1644EFB DEC8D2D5-E3CF-48B6-A653-8E69E2716641 au|sitecore\agency|pd|-item:write|-item:admin|!*|+item:read|-item:delete|-item:create|-item:rename|pe|-item:write|-item:admin|!*|+item:read|-item:delete|-item:create|-item:rename| 2011-03-07 11:48:14.270 2011-03-07 11:48:14.270
【讨论】:
SQL 架构没有像您想象的那样设置。权限存储在 Sitecore 项目字段中,而不是表中的特定列中。在 SQL 中,它只是内容项的 XML 数据的一部分。您可以解析它,但我不建议直接使用 SQL。您能解释一下为什么必须使用 SQL 来执行此操作吗?
【讨论】:
安全性与每个单独的项目相关联,并且在 _Security 字段中。 此字段是共享的并且位于 SharedFields 表中。 每个值都由管道分隔。 与用户角色相关的信息与角色 ID 和角色名称一起存储在用户表中。
【讨论】: