スプリングブートでREST-APIを開発中です。今私はOAuth2プロバイダとしても働きたいので、 "client_credentials"認可タイプのサポートを追加したいと思います。SpringカスタムログインページがIDEにのみ表示
これを行うには、ユーザーにログインしてクライアントを許可する必要があります。 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にアクセスすると醜いデフォルトのログインフォームが表示され、春は私のカスタムフォームのリソースを見つけることができません。
私はtestpage.jsp
のような他の.jspファイルにアクセスしようとすると、私は次のようなエラー(アプリは私のIDEから実行されたとき、これはまた、正常に動作します)を取得:
を私は自分のアプリケーションを展開していますjava -jar myserver.war
を使用して.warファイルを実行するドッカーコンテナを使用しているので、これは私のために働く必要があります。
.warファイルの実行時にSpringが提供されたリソースを見つけることを確認するにはどうすればよいですか?
試みを参照することができ、詳細な説明については
world-example-jsp/..また、戦争の代わりにファットジャーを構築することを検討することができます(あなたがまだいない場合)。 –
投稿した画像によると、HTTP 500の内部サーバーエラーが発生しました。スタックトレース? –
解決策は実際にはWEB-INFに入れていたので、私のフォルダ構造は 'src/main/webapp/WEB-INF/jsp'です。あなたが私がそれを受け入れることができる答えを提供したいならば、@ redflar3。 –