web-dev-qa-db-ja.com

@EnableWebSecurityと@EnableWebMvcSecurityの違いは何ですか?

@EnableWebSecurity

JavaDocのドキュメント:

@Configurationクラスにこの注釈を追加して、WebSecurityConfigurerベースクラスを拡張し、個々のメソッドをオーバーライドすることにより、WebSecurityConfigurerAdapterで定義されたSpring Security構成を持つようにします。

@EnableWebMvcSecurity

JavaDocのドキュメント:

この注釈を@Configurationクラスに追加して、Spring Security構成をSpring MVCと統合します。

  • Spring MVCと統合する」とはどういう意味ですか?どのような追加の動作が得られますか?
  • guidesanswers が見つかりました。これは、この注釈がCSRF TokensSpring MVC Formsに追加することを示唆していますが、これだけが追加されますか?
45
Mike R

これらのクラスを見ると、@EnableWebMvcSecurityは実際に@EnableWebSecurityアノテーションをWebMvcSecurityConfigurationに追加します。したがって、@EnableWebMvcSecurity@EnableWebSecurityが実行するすべての処理を実行します。

さらに何をお願いしますか?

WebMvcSecurityConfigurationを見ると、AuthenticationPrincipalArgumentResolverが追加されており、コントローラーメソッドの引数に注釈を追加することで認証プリンシパルにアクセスできることがわかります。すなわち:

public String show(@AuthenticationPrincipal CustomUser customUser) {
    // do something with CustomUser
    return "view";
}

また、Spring Web MVCと統合して、CSRFトークンをフォームに追加します。

37
Steve

Spring Security 4.0以降、@EnableWebMvcSecurityは非推奨です。置換は@EnableWebSecurityこれは、クラスパスに基づいてSpring MVC機能の追加を決定します。

Spring MVCとSpring Securityの統合を有効にするには、@EnableWebSecurity設定への注釈。

ソース

47
Cassian