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"); }
この設定だと、ログインが成功すると/にリダイレクトを行う。 しかし、この時リダイレクト先のビューがリンクを持つページだった場合、リンクに飛ばされてしまっていた。
実際の細かな処理はわからないが、この問題はリンクを書く時は、テンプレートエンジンの埋め込みを使うことで解決した。