Версия Domino: 9.0.1
Случай использования
У меня есть основная база данных (DB0.nsf), на которой у пользователя есть право доступа читателя и N баз данных, на которых у текущего пользователя, зарегистрированного в системе, есть разные уровни доступа (пример DB1 - пользователь по умолчанию - читатель, DB2 - Пользователь без доступа, DB3 - группа пользователей - автор)
Пользователь открывает xpage из основной базы данных. XPage содержит панель просмотра, которая должна отображать список баз данных, у которых в настоящее время зарегистрированный пользователь имеет минимальный доступ для читателей.
Этот взгляд действует странно, т.е. иногда он работает так, как ожидалось, и отображается вся база данных, на которой пользователь имеет минимальный доступ читателя, и иногда он не отображает все базы данных (в моем примере пользователь должен видеть DB1 и DB3, но иногда он видит только один DB3, он делает не видеть базу данных, которая имеет доступ по умолчанию в ACL, установленном в Reader)
XPage
xsp содержит панель просмотра, где источником является список объектов, определенный в управляемом компоненте как атрибут
управляемая область сеанса bean
Фрагмент моего кода
String path=paths.get(0).replace("\\","\\\\"); String srv=srvss.get(0); dbSearch=NotesContext.getCurrent().getCurrentSession().getDatabase(srv,path,false);
Проблема
В записи db1.nsf.ACL Доступ по умолчанию устанавливается для чтения. Когда тот же пользователь вошел в систему, у меня разные результаты кода выше. Пользователь просто обновляет страницу постоянно, и иногда исключение создается в строке getDatabase.
NotesException: пользователь не может открыть базу данных TEST\\test\\db1.nsf в lotus.domino.local.Session.NgetDatabase (собственный метод) в lotus.domino.local.Session.getDatabase (неизвестный источник)
Дополнительная отладка
Я добавил несколько строк для отладки - и когда выбрано исключение, я получаю такую же базу данных, что и подпись подписчика и уровень доступа к печати для каждой записи ACL в этой базе данных. в моем примере я открываю DB1.nsf как sessionAsSigner, а в консоли я вижу, что уровень ACL по умолчанию для DB1.nsf - это Reader.
Мы ценим любые предложения.
Как я писал в своем последнем комментарии, я мог только догадываться, почему DEFAULT иногда не работает. В качестве обходного пути вы можете использовать глобальные группы (мои личные предпочтения) или записи заполнителя, такие как "*/yourDomain",
Использование групп (в сочетании с роли ACL) также имеет много преимуществ при сохранении прав доступа к вашим базам данных. Это просто способ защиты Notes