ОБНОВЛЕНО:
Здесь вы можете найти другое хорошее решение.https://sharepoint.stackexchange.com/questions/253723/restrict-list-view-to-role-sp-o365
Это действительно хорошее решение, потому что вам нужны только права администратора и без кода.Вам нужно создавать папки, нарушать наследование ролей и добавлять разрешения для папок.
Мой старый ответ:
Из моего опыта Это зависит от того, что вы ожидаете от решения, от ваших ограничений, от того, что выхотите получить и какими вещами вы можете пожертвовать, а в некоторых случаях - какой редакцией SharePoint вы пользуетесь.
Примечание. SharePoint не имеет готовых полностью настраиваемых разрешений для элементов списка.
IМожно сказать о некоторых ожиданиях, некоторых деталях, некоторых решениях и обходных путях и о том, как это реализовать.Вы можете попытаться получить то, что относится к вам:
.1.Вы хотите запретить пользователям видеть других пользователей.Но:
- пользователи с определенными разрешениями могут создавать свои собственные представления и, следовательно, они могут создавать представления со всеми полями и всеми элементами списка данных из других запрещенных представлений,
- пользователи могут получать данные овсе поля в элементах списка и все элементы списка из REST API, JSOM API и других готовых веб-служб SharePoint, пользователи
- могут открывать любой элемент списка, изменять идентификатор элемента URL на другой и просматривать любые данные издругой элемент списка.
Для этого вы можете:
.1.1.Откройте список под каждым пользователем и создайте его собственный персональный вид.Личные представления отображаются только для отдельных пользователей.
.1.2.Создайте публичное представление и установите его целевую аудиторию.Откройте страницу просмотра -> в правом углу щелкните значок шестеренки -> Изменить страницу -> на странице щелкните значок стрелки в веб-части представления списка -> Изменить веб-часть -> Раздел «Дополнительно» -> Поле «Целевые аудитории».Если у вас нет этой опции, включите целевую аудиторию.Настройки списка -> Настройки таргетинга на аудиторию -> Включить таргетинг на аудиторию.В аудиториях вы можете указать пользователей или группы SharePoint, у которых есть разрешения на просмотр этой веб-части.Здесь вы можете увидеть различные варианты использования аудитории и как включить ее в списке или библиотеке:https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293
.1.3.Создайте общедоступное представление, откройте его страницу, отредактируйте страницу, удалите веб-часть представления списка, добавьте веб-часть запроса контента и установите ее целевую аудиторию.Здесь вы можете увидеть информацию о целевой аудитории:https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293Но я не выполнил это сам.
.1.4.Добавить JavaScript на страницу просмотра списка.Этот javascript будет проверять права пользователя и скрывать представление или перенаправлять пользователя в другое место или выполнять другие действия.
.2.Пользователи не могут видеть элементы списка, созданные другими пользователями, из любого источника (любых представлений списка, любых API и веб-служб).
.2.1.Примечание: это ограничено.Пользователь может только читать, редактировать элементы списка, которые он создал.Вы не можете применить это к элементам списка, созданным другими пользователями.Для этого вы можете:Параметры списка -> Раздел «Расширенные настройки» -> Блок «Разрешения на уровне элемента» -> Параметры «Чтение элементов, созданных пользователем» и «Создание элементов и редактирование элементов, созданных пользователем».
.2.2.Создайте разные списки для разных пользователей с разными разрешениями.
.2.3.Примечание. Это ограничено уникальными разрешениями SharePoint.Вы можете создать рабочий процесс SharePoint, который запускается при создании элемента списка.Этот рабочий процесс нарушит наследование роли элемента списка и установит новые разрешения для этого элемента в некоторых условиях.Это может быть хорошо, но здесь существуют некоторые ограничения.Ограниченный список SharePoint должен иметь более определенного количества уникальных разрешений для элемента списка.
.2.4.Я не знаю, есть ли у SharePoint какие-то ограничения на это, но вы можете попробовать, и я не знаю, можете ли вы сделать это из общедоступного API, но вы можете попытаться исследовать.Вы можете создать рабочий процесс SharePoint, который запускается при создании элемента списка.Этот рабочий процесс установит целевые аудитории в элементе списка.Здесь вы можете увидеть информацию о целевой аудитории:https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293
.2.5.Если вы используете локальную версию SharePoint, вы можете добавить:
.2.5.1.Получатель события списка, который запускается на элементе списка. Создайте событие и выполните следующие действия:- нарушить наследование роли элемента списка и установить новые разрешения для этого элемента по некоторым условиямИЛИ ЖЕ- установить целевые аудитории в элементе списка
.2.5.2.Создайте задание таймера, разверните его и запланируйте в центре администрирования SharePoint.Это задание таймера будет периодически проверять вновь созданные элементы списка и:- нарушить наследование роли элемента списка и установить новые разрешения для этого элемента по некоторым условиямИЛИ ЖЕ- установить целевые аудитории в элементе списка
.2.6.Вы можете создать консольное приложение (язык c #), которое подключается к SharePoint, периодически проверять вновь созданные элементы списка и:- нарушить наследование роли элемента списка и установить новые разрешения для этого элемента по некоторым условиямИЛИ ЖЕ- установить целевые аудитории в элементе списка.Это консольное приложение можно запланировать на любом сервере вашей компании с помощью планировщика заданий Windows.
.2.7.Вы можете написать скрипт Powershell, который подключается к SharePoint, периодически проверять вновь созданные элементы списка и:- нарушить наследование роли элемента списка и установить новые разрешения для этого элемента по некоторым условиямИЛИ ЖЕ- установить целевые аудитории в элементе списка.Этот сценарий Powershell можно запланировать на любом сервере вашей компании с помощью планировщика заданий Windows.
.2.8.Вы можете создать службу Windows (язык c #), которая подключается к SharePoint, периодически проверять вновь созданные элементы списка и:- нарушить наследование роли элемента списка и установить новые разрешения для этого элемента по некоторым условиямИЛИ ЖЕ- установить целевые аудитории в элементе списка.Эта служба Windows может быть установлена на любом сервере вашей компании.
.2.9.Может быть, вы можете создать какой-то другой периодически запускаемый код (например, рабочий процесс, консольное приложение, скрипт PowerShell, служба Windows) на любом сервере.Этот код будет:- нарушить наследование роли элемента списка и установить новые разрешения для этого элемента по некоторым условиямИЛИ ЖЕ- установить целевые аудитории в элементе списка.Я думаю, что обертка кода не ограничена какой-либо реализацией.
Я думаю, что этот способ применим во многих случаях.
Если вы хотите более настраиваемый элемент управления или у вас есть некоторые ограничения в реализации,тогда вы можете создать множество обходных путей разными способами.Обходной путь может закрыть многие дыры прав доступа, но может быть не все дыры:
.1.Вы не хотите, чтобы пользователь мог создавать представления из пользовательского интерфейса страницы просмотра списка.Вы можете добавить JavaScript, чтобы скрыть ленту, кнопки или некоторые другие элементы пользовательского интерфейса, чтобы запретить пользователю создавать свое собственное представление или переключаться на другое пользовательское представление.Если пользователь умен, он может избежать этого, используя REST API, JSOM или веб-службы для получения необходимых данных элемента списка.
.2.Вы не хотите, чтобы пользователь мог видеть какие-либо данные элемента списка, меняющие идентификатор элемента списка URL на другой.
.2.1.Вы можете добавить некоторые JavaScript на страницах форм по умолчанию.На странице формы «Новый элемент», на странице формы «Просмотреть элемент» и на странице формы «Изменить элемент».Этот javascript будет проверять права пользователя и скрывать данные или перенаправлять пользователя обратно на страницу просмотра списка или куда-либо еще.
.2.2.Вы можете создать HttpModule, который перехватывает веб-запросы, проверяет разрешения пользователя и перенаправляет его на другую страницу, если у него нет разрешений.HttpModule должен быть добавлен в веб-конфигурацию IIS и SharePoint.
.3.Вы можете попытаться запретить использование REST API, JSOM, но я этого не делал.Я думаю, что вы можете добавить HttpModule для IIS, который будет перехватывать веб-запросы и проверять разрешения пользователей и возвращать коды состояния HTTP и сообщения об ошибках неверного запроса.Но я еще не попробовал это сам.Здесь вы должны знать все конечные точки API, чтобы закрыть к ним доступ.
Может быть, здесь существует множество других обходных путей, но я не помню о них сейчас.
Попробуйте что-то из того, что я сказал.Может быть, это поможет вам.