Spring security autorise la demande d'url et de méthode à L'aide de HttpSecurity
Existe-t-il un moyen d'autoriser la requête post à une url spécifique en utilisant org.springframework.security.config.annotation.web.builders.HttpSecurity
?
J'utilise HttpSecurity
comme:
@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 les requêtes POST /api/abonnement chemin. Seul POST. Grâce.
24
demandé sur
ilopezluna
2015-03-06 23:24:19
2 réponses
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");
44
répondu
Matt C
2016-02-29 17:24:41
Je sais que cette question est un peu ancienne mais je ne crois pas que la désactivation du support csrf soit une réponse acceptable. J'ai eu ce même problème mais je ne me sens pas bien en mesure d'utiliser csrf.désactiver(). 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}" />
4
répondu
Patrick
2016-02-26 01:24:31