Existe-t-il un moyen d'autoriser une demande de publication pour une URL spécifique en utilisant org.springframework.security.config.annotation.web.builders.HttpSecurity
?
J'utilise HttpSecurity
as:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilterAfter(new CsrfCookieGeneratorFilter(), CsrfFilter.class)
.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint)
.and()
.rememberMe()
.rememberMeServices(rememberMeServices)
.key(env.getProperty("jhipster.security.rememberme.key"))
.and()
.formLogin()
.loginProcessingUrl("/api/authentication")
.successHandler(ajaxAuthenticationSuccessHandler)
.failureHandler(ajaxAuthenticationFailureHandler)
.usernameParameter("j_username")
.passwordParameter("j_password")
.permitAll()
.and()
.logout()
.logoutUrl("/api/logout")
.logoutSuccessHandler(ajaxLogoutSuccessHandler)
.deleteCookies("JSESSIONID")
.permitAll()
.and()
.headers()
.frameOptions()
.disable()
.authorizeRequests()
.antMatchers("/api/register").permitAll()
.antMatchers("/api/activate").permitAll()
.antMatchers("/api/authenticate").permitAll()
.antMatchers("/api/logs/**").hasAuthority(AuthoritiesConstants.ADMIN)
.antMatchers("/api/subscriptions").permitAll()
.antMatchers("/api/**").authenticated();
}
Je voudrais autoriser POST demandes à/api/chemin d'abonnement. Seulement POST. Merci.
Jetez un oeil ici https://github.com/spring-projects/spring-data-examples/tree/master/rest/security qui a
http
.httpBasic().and()
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/employees").hasRole("ADMIN")
.antMatchers(HttpMethod.PUT, "/employees/**").hasRole("ADMIN")
.antMatchers(HttpMethod.PATCH, "/employees/**").hasRole("ADMIN");
Je sais que cette question est un peu ancienne, mais je ne pense pas que désactiver le support de CSRF soit une réponse acceptable. J'ai eu le même problème, mais je ne me sens pas capable d'utiliser csrf.disable (). Au lieu de cela, j'ai ajouté la ligne suivante au bas de la page à l'intérieur des balises de formulaire.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
Il suffit de mentionner le chemin que vous devez supprimer l'authentification comme ceci
http
.httpBasic().and()
.authorizeRequests()
.antMatchers("/employees" , "/employees/**")
.permitAll().anyRequest().authenticated()
.and().csrf().disable()