2

formLogin が追加され、カスタム loginPage が追加されたSpring Securityを含むSpring Bootアプリが1つあります。認証されるたびに、/ app/dashboard である defaultSuccessUrl に送信され、スキーマhttpで送信されますビーンですが、私はまだそれを実現できていません。私のアプリケーションは cloudfoundry にあり、80 ポートはありませんが 443(https) しかありません。

春の私の構成は次のようなものです:

http
    .authorizeRequests()
    .antMatchers("/", "/forbidden", "/index.html", "/webjars/*", "/app.js", "/access/*", "/signup", "/l10n/*.js", "/", "/tpl/**/*.html", "/fonts/**/*.woff").permitAll()
    .anyRequest().authenticated()

    .and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).
    csrf().csrfTokenRepository(repo)

    .and() .httpBasic().disable()
    .formLogin()
    .loginPage("/access/signin").permitAll()
    .failureUrl("/error")
    .defaultSuccessUrl("/app/dashboard")
    .and().logout()
    .logoutRequestMatcher(new AntPathRequestMatcher("access/logout"))
    .logoutSuccessUrl("/access/signin").permitAll();

また、 httpsで絶対 URL を使用しようとしましたが、うまくいきません。

4

1 に答える 1

9

試してみましたrequiresChannel()requiresSecure()?https経由で特定のURLにアクセスできるようにするには、試すことができます

.defaultSuccessUrl("/app/dashboard").and().requiresChannel().antMatchers("/app/dashboard").requiresSecure() 

https を通過するすべてのリクエストに対して、次のように使用できます

.and().requiresChannel().anyRequest().requiresSecure()

以下のようにポートマッピングを使用できます。

 http
     .portMapper()              
        .http(8080).mapsTo(443);

詳細については、これこれを参照してください。

于 2016-12-13T10:17:00.727 に答える