Я запускаю CKFinder/CKEditor через Apache Tomcat, используя Java и JavaScript. Есть несколько проектов, и проблема в том, что я не могу запретить людям в одном проекте доступ к изображениям, хранящимся для другого проекта. Я хотел бы просто динамически изменять BaseURL, но я не могу этого сделать. Есть ли способ дать каждому пользователю свою собственную папку, к которой они и только они могут получить доступ?
Личные папки в CKFinder
Ответы (1)
По крайней мере, есть способы динамически изменять пути в CKFinder 2 для Java.
Использование идентификатора, назначенного экземпляру CKFinder
Если вы назначите идентификатор экземпляру CKFinder, этот идентификатор будет передаваться коннектору сервера при каждом запросе. Вы можете использовать его как токен и преобразовать каждый уникальный идентификатор в правильный путь к серверу на стороне сервера. Обязательно используйте длинный/сложный хэш, чтобы пользователи не могли получить доступ к пути, к которому у них не должно быть доступа, легко манипулируя идентификатором.
Преимущество этого подхода заключается в том, что вы можете назначить для каждого экземпляра CKFinder разные baseUrl/baseDir, например, чтобы иметь отдельные папки для изображений для каждой статьи и т. д.
Переменные сеанса
Другой вариант — использовать переменные сеанса. Как только пользователь войдет в систему, сохраните в переменной сеанса правильные переменные baseDir/baseUrl.
Настройка конфигурации CKFinder вне config.xml
Чтобы использовать идентификатор или сеансы, вы должны иметь возможность сообщить CKFinder об их использовании. Для получения более подробной информации о том, как динамически изменять конфигурацию CKFinder в вашем собственном классе, обратитесь к документации: http://docs.cksource.com/CKFinder_2.x/Developers_Guide/Java/Configuration/Extending