我正在使用 Spring Boot 开发REST-API。现在我想充当OAuth2提供者,因此我想添加对" client_credentials"的支持。授予类型。
为了做到这一点,我必须允许用户登录并授权客户端。 Spring提供了一个丑陋的默认登录表单,所以我现在想要显示自己的自定义登录表单。
问题是我无法在IDE之外使用它。
我的配置如下:
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().requireCsrfProtectionMatcher(new AntPathRequestMatcher("**/login")).and().authorizeRequests().antMatchers("/hellopage").hasAuthority(Role.USER.value())
.and().formLogin().defaultSuccessUrl("/hellopage").loginPage("/login").and().logout().permitAll();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/*.css");
web.ignoring().antMatchers("/*.js");
}
}
@Configuration
protected class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/*.js/**").addResourceLocations("/ui/static/");
registry.addResourceHandler("/*.css/**").addResourceLocations("/ui/static/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/login").setViewName("login");
registry.addViewController("/testpage").setViewName("testpage");
registry.addViewController("/hellopage").setViewName("hellopage");
}
@Bean
public InternalResourceViewResolver setupViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/ui/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
我的文件夹结构如下所示:
当我在Eclipse中运行我的应用程序并访问http://localhost:8080/login时,一切正常,并显示我的自定义登录表单。当我使用maven打包我的应用程序并执行生成的 .war文件时,访问http://localhost:8080/login会显示丑陋的默认登录表单,这会让我相信spring无法找到我自定义的资源形成。
当我尝试访问testpage.jsp
之类的任何其他.jsp时,我收到以下错误(当我的IDE运行该应用程序时,这也可以正常工作):
我正在使用使用java -jar myserver.war
运行.war文件的docker容器部署我的应用程序,所以这对我有用。
如何在执行.war文件时确保Spring能够找到我提供的资源?
答案 0 :(得分:1)
默认情况下,Maven期望在/ WEB-INF / *位置使用jsp。
您可以将jsp保留在NA
中。您也可以相应地更新#
# create example data
#
before.df <- data.frame("SN" = c(1, 2), "rad" = 0, "grid" = 47, "M" = c(1.000562, 1.00222), "extra" = c(24, 9))
after.df <- data.frame("SN" = c(1, 1, 2, 2), "rad" = 0, "grid" = 47,
"M" = c(31.1330427146, 32.4380778593, 33.8091346758, 36.7704819283))
#
# create empty "extra" column in after.df to match before.df
#
after.df$extra <- NA
#
# create "time" id in each dataset to indicate before/after observations
#
before.df$time <- 0
after.df$time <- 1
combined.df <- rbind(before.df, after.df)
src/main/webapp/WEB-INF/jsp
。