2017-06-26 1 views
2

スプリングブートで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内で自分のアプリケーションを実行して、アクセスすると

enter image description here

http://localhost:8080/loginすべてが正常に動作し、私のカスタムログインフォームが表示されます。アプリケーションをmavenにパッケージ化し、生成された.warファイルを実行すると、http://localhost:8080/loginにアクセスすると醜いデフォルトのログインフォームが表示され、春は私のカスタムフォームのリソースを見つけることができません。

私はtestpage.jspのような他の.jspファイルにアクセスしようとすると、私は次のようなエラー(アプリは私のIDEから実行されたとき、これはまた、正常に動作します)を取得:

enter image description here

を私は自分のアプリケーションを展開していますjava -jar myserver.warを使用して.warファイルを実行するドッカーコンテナを使用しているので、これは私のために働く必要があります。

.warファイルの実行時にSpringが提供されたリソースを見つけることを確認するにはどうすればよいですか?

+0

試みを参照することができ、詳細な説明については

world-example-jsp/..また、戦争の代わりにファットジャーを構築することを検討することができます(あなたがまだいない場合)。 –

+0

投稿した画像によると、HTTP 500の内部サーバーエラーが発生しました。スタックトレース? –

+0

解決策は実際にはWEB-INFに入れていたので、私のフォルダ構造は 'src/main/webapp/WEB-INF/jsp'です。あなたが私がそれを受け入れることができる答えを提供したいならば、@ redflar3。 –

答えて

1

デフォルトでは、Mavenは/ WEB-INF/*のjspを必要とします。

あなたはjspをsrc/main/webapp/WEB-INF/jspに保存できます。それに応じてInternalViewResolverprefixも更新することができます。あなたはSRC /メイン/ webappの/ WEB-INF/JSP https://www.mkyong.com/spring-boot/spring-boot-hello-にjarファイルを保つhttps://stackoverflow.com/a/19786283/3981536

関連する問題