У меня есть веб-приложение, созданное с помощью Spring 3.1 с использованием Spring Security 3.0, развернутое под Tomcat 6. Некоторые страницы на сайте доступны только пользователям с ролью ROLE_MEMBER. На одной из страниц представлен динамический список файлов, доступных для загрузки. Пользователи могут загружать новые файлы с помощью защищенной формы в приложении. Мой вопрос: где я могу хранить файлы, чтобы доступ к ним был защищен Spring Security? В настоящее время я храню их в папке веб-приложения, но это затрудняет развертывание новых версий приложения, поскольку мне приходится создавать резервные копии файлов и восстанавливать их после повторного развертывания новой версии Tomcat.

0
jalynn2 3 Апр 2013 в 16:47

1 ответ

Лучший ответ

Spring Security может защитить некоторые URL-адреса или вызовы методов. Он не может защитить ваши файлы. Так что неважно, где находится ваш файл. Важно, используя какой URL-адрес пользователь может загрузить какой-либо файл.

Примере:

http://domain.com/files.html - list of files

Соответствующие файлы:

http://domain.com/files/file1.pdf
http://domain.com/files/file2.doc
http://domain.com/files/file3.png

Конфигурация безопасности:

<intercept-url pattern="/files.html" access="hasRole('ROLE_MEMBER')" />
<intercept-url pattern="/files/**" access="hasRole('ROLE_MEMBER')" />

Фактические пути к файлам (они не важны с точки зрения безопасности):

/home/user/uploads/file1.pdf
/home/user/uploads/file2.doc
/home/user/uploads/file3.png

Конечно, вам нужен сервлет / контроллер, который будет отвечать за отправку содержимого файла по заданному URL-адресу.

1
Maksym Demidas 3 Апр 2013 в 17:20
Да, спасибо за перспективу. Я закодирую сервлет для потоковой передачи файлов извне веб-приложения.
 – 
jalynn2
4 Апр 2013 в 15:57