rdEncoder passwordEncoder() { return new BCryptPasswordEncoder(11); } }
WebAppConfig
因为采用RESTful风格,这里配置响应视图为json格式。
复制
@Configuration @EnableWebMvc @ComponentScan(basePackages = "org.xueliang.springsecuritystudy") @PropertySource({"classpath:config.properties"}) public class WebAppConfig extends WebMvcConfigurerAdapter { @Bean public RequestMappingHandlerAdapter requestMappingHandlerAdapter(@Autowired MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter, @Autowired ContentNegotiationManager mvcContentNegotiationManager) { RequestMappingHandlerAdapter requestMappingHandlerAdapter = new RequestMappingHandlerAdapter(); requestMappingHandlerAdapter.setMessageConverters(Collections.singletonList(mappingJackson2HttpMessageConverter)); requestMappingHandlerAdapter.setContentNegotiationManager(mvcContentNegotiationManager); return requestMappingHandlerAdapter; } @Bean public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { return new MappingJackson2HttpMessageConverter(); } /** * 设置欢迎页 * 相当于web.xml中的 welcome-file-list > welcome-file */ @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "/index.html"); } }
WebAppInitializer
Spring Security 架构是完全基于标准的 Servlet 过滤器的,这里我们需要在 WebInitializer 中引入 DelegatingFilterProxy 过滤器。
复制
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { servletContext.addFilter("springSecurityFilterChain", new DelegatingFilterProxy("springSecurityFilterChain")).addMappingForUrlPatterns(null, false, "/api/*");
Source
本文使用到的项目源码已经放到 Github 上,你可以下载后运行。
|