AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.10.2010, 18:50   #1  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
настройка прав пользователя, очевидно
Старый 07.10.2010, 22:44   #2  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Цитата:
Сообщение от Sancho Посмотреть сообщение
настройка прав пользователя, очевидно
Еще б я лицензии сравнил.
И синхронизацию прав выполнил.
Старый 08.10.2010, 09:18   #3  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Цитата:
Сообщение от apanko Посмотреть сообщение
Еще б я лицензии сравнил.
И синхронизацию прав выполнил.
Лицензии стояли разные, не очень понимаю как она может на это влиять, но после установки одинаковой ситуация не изменилась.
Старый 08.10.2010, 09:13   #4  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Раз на форме отображаются только выборочные по фильтру записи, то фильтры защиты работают. А раз они работают, то как я понимаю выход за разрешённый диапазон должен сопровождаться ошибкой. Как можно так настроить права доступа, чтобы форма фильтровалась секьюрити фильтрами, а в коде был полный игнор их?
Старый 08.10.2010, 11:10   #5  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от grif Посмотреть сообщение
Раз на форме отображаются только выборочные по фильтру записи, то фильтры защиты работают. А раз они работают, то как я понимаю выход за разрешённый диапазон должен сопровождаться ошибкой. Как можно так настроить права доступа, чтобы форма фильтровалась секьюрити фильтрами, а в коде был полный игнор их?
Настроенные секьюрити фильтры работают на формах, для этого ничего дополнительно писать не нужно. Видимо эти фильтры неявно накладываются.
В коде, если не применять инструкцию SETPERMISSIONFILTER() секьюрити фильтры применяться не будут, делать можно все, что угодно в коде. Но при попытке открыть форму на записи из закрытого диапазона возникнет ошибка. Включатся форменные механизмы обработки фильтров.
Старый 08.10.2010, 11:26   #6  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Цитата:
Сообщение от romeo Посмотреть сообщение
Настроенные секьюрити фильтры работают на формах, для этого ничего дополнительно писать не нужно. Видимо эти фильтры неявно накладываются.
В коде, если не применять инструкцию SETPERMISSIONFILTER() секьюрити фильтры применяться не будут, делать можно все, что угодно в коде. Но при попытке открыть форму на записи из закрытого диапазона возникнет ошибка. Включатся форменные механизмы обработки фильтров.
Ну да, всё это понятно и так, но как я понимаю при попытке выхода в коде за разрешённые записи ДОЛЖНА вывалиться ошибка, что и происходит на одной из баз, но не происходит на другой.
Старый 08.10.2010, 11:29   #7  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от grif Посмотреть сообщение
Ну да, всё это понятно и так, но как я понимаю при попытке выхода в коде за разрешённые записи ДОЛЖНА вывалиться ошибка, что и происходит на одной из баз, но не происходит на другой.
Нет, в коде ошибка при чтении записи из запрещенного диапазона вываливаться не должна. Именно поэтому почти бессмысленно настраивать секьюрити фильтры на функиональность, которая широко юзается. Потому что образовавшихся брешей и дыр будет немеряно. Закрыть ими можно и целесообразно что-то новое, написанное недавно.
Старый 08.10.2010, 12:00   #8  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
раз проблема так актуальна, то очередной раз акцентирую на возможное различие в правах пользователя, под которым тестируете!
может быть у него какая-то такая роль есть, которая снимает это ограничение (предоставляет доступ ко всей таблице)?
нигде вместо "да" не стоит "косвенно"?
опять же, Андрей прав, синхренизированы ли пользователи?

с лицензией вряд ли связано: либо видим, либо не видим.
пермишны на объектах одинаковые, раз объекты одинаковые.
Старый 08.10.2010, 14:11   #9  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
снести зуп файлы?
Бог знает что там может быть понаписано...
Старый 08.10.2010, 14:28   #10  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Цитата:
Сообщение от Sancho Посмотреть сообщение
снести зуп файлы?
Бог знает что там может быть понаписано...
Пробовал уже и не помогло
Старый 08.10.2010, 14:35   #11  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
))))))))

востановить таблицы? индексы послетали?

ну у меня креатив кончился

жду результатов
Старый 08.10.2010, 14:40   #12  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Есть возможность настраивать секьюрити фильтры для фирмы.. Может быть фирмы разные в двух базах? ))
Старый 09.10.2010, 15:05   #13  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Цитата:
Сообщение от romeo Посмотреть сообщение
Есть возможность настраивать секьюрити фильтры для фирмы.. Может быть фирмы разные в двух базах? ))
Если бы я затупил и настроил секьюрити фильтры не для той фирмы с которой работаю, то на форме этой таблицы (и в таблице в обджект дизайнере) отображались бы все записи, а не определённый секьюрити фильтром.
Если перейти к конкретике, то права настроены для всех фирм и сделано это одинаково в двух базах.
Старый 09.10.2010, 15:14   #14  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Цитата:
Сообщение от Sancho Посмотреть сообщение
))))))))

востановить таблицы? индексы послетали?

ну у меня креатив кончился

жду результатов
Тестирую на таблице-справочнике в которой 100 записей. Фильтрую по первичному ключу (одно поле Code). Да и проблема на нескольких разных таблицах выявляется. Кстати ещё выяснил, что вызов функции SETPERMISSIONFILTER не устанавливает никаких фильтров на запись
Старый 09.10.2010, 16:03   #15  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Чтобы не было мысли что я где-то дезинформирую, распишу по шагам свои действия.
Создана новая роль у которой установлены следующие права доступа:
Код:
Тип Объекта	Объект ID	Имя Объекта	Чтение	Вставка	Изменение	Удаление	Запуск	Фильтр защиты
Данные		14		Склад		Да	Да	Да		Да		Да	Location: Код=ТРАНЗИТ
Таблица		0				Да	Да	Да		Да		Да	
Форма		0				Да	Да	Да		Да		Да	
Система		0				Да	Да	Да		Да		Да
Тестовому пользователю назначена ТОЛЬКО эта роль.
Permissions для таблицы 14 - <Undefined>
Permissions для тестовой формы - <Undefined>

На форме добавлена кнопка с кодом
Код:
Name	DataType	Subtype	Length
_Loc	Record		Location

_Loc.FINDFIRST;
_Loc.SETPERMISSIONFILTER;
MESSAGE(_Loc.Code);
При нажатии кнопки под тестовым пользователем (перелогинен после настройки прав и редактирования формы) выскакивает сообщение с текстом склада, название которого начинается на А (что с ТРАНЗИТ не совпадает).
Если убрать строку _Loc.SETPERMISSIONFILTER, то ничего не меняется.

При этом если зайти в Object Designer и глянуть записи для Table 14 Location, то видна только одна запись (смотрю там специально, чтобы вы не предположили что на форме были сохранены фильтры)

Причём вот такой код
Код:
  _Perm.SETRANGE(_Perm."Role ID",'ТЕСТ');
  _Perm.SETRANGE(_Perm."Object Type",_Perm."Object Type"::"Table Data");
  _Perm.FINDFIRST;
  MESSAGE(FORMAT(_Perm."Object ID")+' '+FORMAT(_Perm."Security Filter"));
на той же кнопке под тестовым пользователем выдаёт
Цитата:
---------------------------
Microsoft Business Solutions-Navision
---------------------------
14 Location: Код=ТРАНЗИТ
---------------------------
ОК
---------------------------
Т.е. фильтры на роли точно есть, они применяются автоматом к формам, таблицам и т.п., но никак не применяются для кода.
Старый 11.10.2010, 15:38   #16  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Немного всё таки дезинформировал из-за спешки
В коде установка фильтров безопасности стояла не в том месте
Код:
_Loc.FINDFIRST;
_Loc.SETPERMISSIONFILTER;
MESSAGE(_Loc.Code);
Вот так правильно
Код:
_Loc.SETPERMISSIONFILTER;
_Loc.FINDFIRST;
MESSAGE(_Loc.Code);
и вот так фильтрует, но если убрать _Loc.SETPERMISSIONFILTER, то ошибки не возникает, но должна
Старый 11.10.2010, 16:07   #17  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
Не должно быть ошибки - код всегда работает с полным набором данных.
Хотите наложить в коде "фильтры доступа" - вызывайте SETPERMISSIONFILTER
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.