J'ai un problème lors de l'utilisation de la sécurité de printemps dans un projet vaadin avec spring-boot. Donc j'utilise un Addon PdfViewer pour afficher les fichiers PDF. Mais je reçois le message d'erreur suivant:404 pour les fichiers js lors de l'utilisation de spring boot avec vaadin
error:"Not Found"
message:"No message available"
path:"/APP/PUBLISHED/pdf.worker.js"
status:404
et ma configuration de sécurité du printemps ressemble à ceci:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.headers()
.defaultsDisabled()
.frameOptions().sameOrigin().and()
.csrf().disable() // Use Vaadin's CSRF protection
.authorizeRequests().antMatchers("/").permitAll()
.antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll()
.antMatchers("/vaadinServlet/UIDL/**").permitAll()
.antMatchers("/vaadinServlet/APP/PUBLISHED/**").permitAll()
.antMatchers("login?debug").permitAll()
.antMatchers("/#!pwdreset/*").permitAll()
.antMatchers("/pwdreset/*").permitAll()
.and()
.authorizeRequests()
.and()
.formLogin().loginPage("/#!login").permitAll()
.and()
.logout().logoutUrl("/#!login?logout").logoutSuccessUrl("/").permitAll().and()
.sessionManagement().sessionFixation().newSession();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**", "/VAADIN/**");
}
vérification Ainsi, les fichiers chargés dans Chrome je vois un dossier /vaadinServlet/APP/PUBLIÉ/ et il y a tous les fichiers nécessaires.
L'utilisation de l'addon sans ressort de sécurité fonctionne bien, donc n'importe qui une idée?
Mise à jour
Il ne semble pas être lié à la sécurité au printemps, parce que je reçois un comportement similaire tout en testant la Addon dans un nouveau projet simple. Il semble être un problème avec le démarrage de printemps.
Pour reproduire ce problème dont vous avez besoin (full project for download):
-
botte ressort de base
- + Vaadin squelette app
- PDF simple et sous
/webapp/files
- PdfViewer add-on dans votre pom et widgetset compilé
- le ci-dessous interface utilisateur simple
@Theme("mytheme")
@SpringUI
@Widgetset("org.test.AppWidgetSet")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();
String basepath = VaadinService.getCurrent().getBaseDirectory().getAbsolutePath();
File file = new File(basepath.concat("/files/test.pdf"));
if (file.exists()) {
PdfViewer pdfViewer = new PdfViewer(file);
Label info = new Label("File was found!");
layout.addComponents(info, pdfViewer);
} else {
Label info = new Label("no file found!");
layout.addComponent(info);
}
setContent(layout);
}
}
- outils open développeur chrome & avec l'onglet
Network
sélectionné, accéder à l'application et vous devriez voir une demande depdf.worker.js
échouent.
Seriez-vous en mesure de fournir un [sscce] (http://sscce.org) pour reproduire votre problème? Rien d'extraordinaire, juste un pom minimum, une interface utilisateur, une configuration spring-boot et un lanceur (classe principale) qui produit cette erreur. Je ne vois rien de mal avec votre config, peut-être que vous pourriez déplacer tous les chemins des ressources statiques vers la liste de matcher 'ignore' dans la méthode' configure', mais cela ne devrait pas poser de problème de toute façon.J'ai une configuration similaire mais la mienne fonctionne bien, donc sans la reproduire il serait difficile à comprendre (pour moi au moins) – Morfic
@Morfic Je viens de mettre à jour ma question car il semble y avoir un problème avec le démarrage au printemps et il n'a rien à voir avec la sécurité du printemps. En créant un exemple, j'obtiens la même erreur que dans mon projet. Peut-être avez-vous une idée sur la façon de résoudre ce problème. –