Я настраиваю конфигурацию безопасности в Spring и хочу, чтобы только пользователь мог получить доступ к ресурсам, которые я написал в конфигурации. Если я не написал DELETE
, я не хочу, чтобы кто-нибудь из пользователей мог использовать этот запрос, например,
это самое ограничительное, если я не добавлю это. Что я должен изменить в своем коде?
Я написал следующий код. GET
и POST
в порядке, но я могу удалить и не добавляю это разрешение.
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityJavaConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user")
.password(encoder().encode("passExample"))
.roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic()
.and()
.csrf()
.disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/**").hasRole("USER")
.antMatchers(HttpMethod.POST, "/**").hasRole("USER")
.and()
.formLogin()
.permitAll();
....
Я ожидал, что если я сделаю запрос с DELETE
, приложение не разрешит, потому что я не авторизовал его.
curl -X Delete locahost/servicio/1
{
"timestamp": "2019-05-09T17:43:30.253+0000",
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/service"
}
Но фактическим выводом является состояние 204. Сервер успешно обработал запрос.