La ressource se trouve sous src/main/resources/static/css ou src/main/resources/static/js, j'utilise spring boot, et la classe de sécurité est:
@Configuration
@EnableWebMvcSecurity
@EnableGlobalAuthentication
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// http.authorizeRequests().antMatchers("/", "/index", "/quizStart")
// .permitAll().anyRequest().authenticated();
// http.formLogin().loginPage("/login").permitAll().and().logout()
// .permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("test").password("test")
.roles("USER");
}
}
Cela fonctionne bien (les ressources peuvent être chargées) lorsque j'accède à "/ index" à partir du navigateur, cependant, si je décommente les quatre lignes de la classe, les ressources ne peuvent pas être chargées, les quatre lignes signifie:
http.authorizeRequests().antMatchers("/", "/index", "/quizStart")
.permitAll().anyRequest().authenticated();
http.formLogin().loginPage("/login").permitAll().and().logout()
.permitAll();
Quelqu'un pourrait-il m'aider? Merci d'avance.
Vous voudrez probablement vous assurer que votre répertoire contenant ces éléments est défini comme permitAll.
Voici un extrait de mon fichier de contexte de sécurité de printemps. Sous le répertoire des ressources, j'ai des dossiers js, css et images qui sont autorisés par cette ligne.
<security:intercept-url pattern="/resources/**" access="permitAll" />
Pour une raison quelconque, cela n'a pas fonctionné pour moi:
http.authorizeRequests().antMatchers("/resources/**").permitAll();
Je devais ajouter ceci:
http.authorizeRequests().antMatchers("/resources/**").permitAll().anyRequest().permitAll();
De plus, cette ligne doit être après le code qui restreint l'accès.
Ajouter ce qui suit
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**").anyRequest();
}
vous pouvez également utiliser directement comme "/*.js" pour un fichier spécifique ou "/ resources/**" pour le répertoire
http.authorizeRequests()
.antMatchers("/", "/login", "/logout", "/error").permitAll()
.antMatchers("/resources/**").permitAll()
.antMatchers("/*.js").permitAll()
.antMatchers("/api/**").authenticated()
J'ai eu le même problème et changer l'accès à "permitAll" n'a pas aidé. J'ai créé un nouveau modèle http dans lequel j'ai défini la sécurité sur "aucun", puis j'ai pu télécharger les fichiers css et js sans authentification.
<http pattern="/resources/**" security="none" />
Cela a finalement fonctionné pour moi. Le/home (qui affichera la page de connexion) et les messages d'erreur n'ont pas besoin d'authentification. Toutes les ressources sont permitAll et l'url/main est authentifiée. Toute autre URL (par exemple./Utilisateurs/clients, etc.) devra être ajoutée comme isAuthenticated ()
<security:intercept-url pattern="/home" access="isAnonymous()"/>
<security:intercept-url pattern="/error*" access="isAnonymous()"/>
<security:intercept-url pattern="/main" access="isAuthenticated()"/>
<security:intercept-url pattern="/css/**" access="permitAll" />
<security:intercept-url pattern="/js/**" access="permitAll" />
<security:intercept-url pattern="/fonts/**" access="permitAll" />
<security:intercept-url pattern="/images/**" access="permitAll" />