とてもつらい

プログラミングと本のメモ

Spring Securityでハマった話

いろいろあってSpringで開発をすることになった。 自分の担当箇所はlogin周りだったので、いろいろ調べた結果Spring Securityを使えば良さそうだとわかった。 そこまではよかったが、loginの結果によってビューを表示させるときにはまった。

ハマった問題は、リンク(CSSやJSの読み込むも含む)を持つページを表示する際に、思ったURLとは違うページに飛ばされるという問題だった。 このやり方がいいのかは、Springを使い始めたばかりなのでわからないが、@ConfigurationをつけたJavaConfigで以下様に設定をした。

protected void configure(HttpSecurity http) throws Exception {
    http.
        authorizeRequests().
        anyRequest().
        authenticated();
    http.
        formLogin().
        loginPage("/login");
    http.
        logout().
        logoutUrl("/logout").
        logoutSuccessUrl("/login");
}

この設定だと、ログインが成功すると/にリダイレクトを行う。 しかし、この時リダイレクト先のビューがリンクを持つページだった場合、リンクに飛ばされてしまっていた。

実際の細かな処理はわからないが、この問題はリンクを書く時は、テンプレートエンジンの埋め込みを使うことで解決した。