これが正しく取得されたかどうかを確認したいだけなので、どんな応答にも感謝します。私の構成オーバーライドで:
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.
[...]
permitAll()
[...]
}
permitAll()はすべてのリクエストを許可しますが、
anonymous()
notログインしているユーザーのみにアクセスを許可しますbutどちらの場合もHttpSession-オブジェクトはデフォルトで作成されます。
そうですか?
春から ドキュメント :
許可するものを明示的に指定し、それ以外のものはすべて許可しない「デフォルトで拒否」を採用することは、一般に優れたセキュリティプラクティスと見なされています。認証されていないユーザーがアクセスできるものを定義することは、特にWebアプリケーションの場合、同様の状況です。多くのサイトでは、ユーザーが少数のURL以外のもの(ホームページやログインページなど)に対して認証される必要があります。この場合、保護されたすべてのリソースに対してではなく、これらの特定のURLに対してアクセス構成属性を定義するのが最も簡単です。別の言い方をすると、ROLE_SOMETHINGがデフォルトで必要であり、アプリケーションのログイン、ログアウト、ホームページなど、このルールに対する特定の例外のみを許可するのが良い場合があります。これらのページをフィルターチェーンから完全に省略して、アクセス制御チェックをバイパスすることもできますが、他の理由、特にページが認証されたユーザーに対して異なる動作をする場合、これは望ましくない場合があります。
これが、匿名認証の意味です。
そして
「匿名で認証された」ユーザーと認証されていないユーザーとの間には、概念的な違いはありません。 Spring Securityの匿名認証は、アクセス制御属性を構成するためのより便利な方法を提供します。
.permitAll()
を使用すると、すべてのリクエスト(匿名ユーザーとログインユーザーの両方)がその特定のパスで許可されるように認証が構成されます。
.anonymous()
式は、主にユーザーのステータス(ログインしているかどうか)を参照します。基本的に、ユーザーが「認証」されるまでは「匿名ユーザー」です。それは誰にとっても「デフォルトの役割」を持っているようなものです。