После поиска по всему миру и просмотра множества других примеров, я не могу заставить Spring перехватывать запросы. Я не должен что-то правильно настраивать, или мои ожидания ошибочны. Может ли кто-нибудь сказать мне, что я делаю неправильно?, столкнувшись с проблемой получения весенней безопасности для перехвата запросов
Это устанавливает аннотацию конфигурации
public class WebMVCApplicationInitializer implements WebApplicationInitializer
{
@Override
public void onStartup(ServletContext servletContext) throws ServletException
{
WebApplicationContext context = getContext();
servletContext.addListener(new ContextLoaderListener(context));
ServletRegistration.Dynamic dispatcher =
servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/*");
}
private AnnotationConfigWebApplicationContext getContext()
{
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setConfigLocation(String.valueOf(this.getClass().getPackage()));
return context;
}
}
Мой WebMvcConfig - определяет, какой пакет, чтобы найти аннотированные контроллеры
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "myproject.controller")
public class WebMvcConfig extends WebMvcConfigurerAdapter
{
}
Мои SecurityConfig - должны соответствовать и требуют проверки подлинности на все
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception
{
// @formatter:off
http
.authorizeRequests()
.anyRequest().authenticated();
// @formatter:on
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception
{
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
, наконец, мой контроллер - просто дает тривиальный ответ для теста ING
@RestController
public class SessionController
{
@ResponseBody
@RequestMapping(value = "echo", method = RequestMethod.GET)
public Map<String, Object> testResponse()
{
Map<String, Object> modelMap = new HashMap<String, Object>();
modelMap.put("data", "test for echo");
return modelMap;
}
}
Теперь, мое ожидание, что когда я запускаю это, и указать браузер для/эхо, он должен требовать аутентификации, или ошибка, или что-то. Вместо этого я просто получаю {"data":"test for echo"}
. (Я признаю, что я не указал поставщика проверки подлинности, но по крайней мере ожидал ошибку.)
Что мне не хватает?