mvc - spring security
Solicitud de autorización de seguridad Spring para url y método utilizando HttpSecurity (2)
Eche un vistazo aquí https://github.com/spring-projects/spring-data-examples/tree/master/rest/security que tiene
http
.httpBasic().and()
.authorizeRequests()
.antMatchers(HttpMethod.POST, "/employees").hasRole("ADMIN")
.antMatchers(HttpMethod.PUT, "/employees/**").hasRole("ADMIN")
.antMatchers(HttpMethod.PATCH, "/employees/**").hasRole("ADMIN");
¿Hay alguna forma de autorizar la solicitud de publicación a una url específica utilizando org.springframework.security.config.annotation.web.builders.HttpSecurity
?
Estoy usando HttpSecurity
como:
@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();
}
Me gustaría permitir solicitudes POST a / api / suscripción ruta. Sólo POST. Gracias.
Sé que esta pregunta es un poco antigua, pero no creo que deshabilitar el soporte de csrf sea una respuesta aceptable. Tuve el mismo problema pero no me siento bien al usar csrf.disable (). En su lugar, agregué la siguiente línea en la parte inferior de la página dentro de las etiquetas de formulario.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />