Я разрабатываю веб-сайт MVC, где вы можете загружать материалы, и до сегодняшнего дня все работало так, как задумано.Я решил включить Spring Security, чтобы защитить свои URL-адреса от несанкционированного доступа и тому подобного.
Мне удалось реализовать это без серьезных проблем, но я заметил кое-что действительно странное.До внедрения Spring Security я мог загрузить файлы PDF с веб-сайта, но после всего, что я могу получить, это кусок данных: Пример
Мой код для обслуживания файлов - этоследующее:
public void getPdfBook(String fileName, HttpServletResponse response) {
ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
PropertiesDAO properties = (PropertiesDAO) context.getBean("propertiesDAO");
String path = properties.getDirectory();
try {
File file = new File(path + File.separator + fileName);
if (file.exists()) {
FileUtils.copyFile(file, response.getOutputStream());
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".pdf");
response.flushBuffer();
} else {
System.out.println("File Not Found on: " + path + File.separator + fileName);
}
} catch (IOException exception) {
System.out.println("IOException");
System.out.println(exception.getMessage());
}
}
И моя конфигурация URL-адреса Spring Security следующая (наряду с другими вещами):
<security:http pattern="/registerUser" security="none" />
<security:http auto-config="true" use-expressions="true">
<security:form-login login-page="/login"
login-processing-url="/authenticateUser"
default-target-url="/"
authentication-failure-url="/login"
username-parameter="username"
password-parameter="password"/>
<security:intercept-url pattern="/login" access="permitAll" />
<security:intercept-url pattern="/newBook" access="hasAuthority('AUTH_ADMIN')" />
<security:intercept-url pattern="/**" access="hasAnyAuthority('AUTH_USER', 'AUTH_ADMIN')" />
<security:logout delete-cookies="JSESSIONID" logout-url="/logout" />
</security:http>
URL-адрес, используемый для загрузки PDF, - это "/ getPdfBook", которыйнаходится в шаблоне "/ **".Я могу сделать запрос, но результат неправильный (изображение я разместил).
Может кто-нибудь помочь?Спасибо !!
PS: Если я отключаю Spring Security для этого URL, то он работает просто отлично.