この記事では、我々は春のセキュリティと春のセッションのセッション管理Webアプリケーションを統合する方法を説明します。
セッションを使用する方法を作成するために、A、春のセキュリティ
春のセキュリティは、正確なコントロールセッションを作成するための4つの方法が用意されています。
- 常に:現在のリクエストにはセッションを持っていない場合は、セッションを作成するには、春のセキュリティが存在します。
- ifRequired(デフォルト):必要なときに春のセキュリティは、セッションを作成するには
- 決して:春のセキュリティは、セッションを作成するためのイニシアチブをとることはありませんが、セッションがすでに存在する場合、それはセッションを使用します
- ステートレス:春のセキュリティを作成したり、任意のセッションを使用していません。ステートレスアプリケーション、リソースを節約するための方法に適したタイプインタフェース。
春のセキュリティ設定に参加するための戦略セッションを作成します。継承WebSecurityConfigurerAdapter、書き換えのconfigure(HttpSecurity HTTP)メソッド
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement()
.sessionCreationPolicy(
SessionCreationPolicy.IF_REQUIRED
)
}
重要:この設定春のセキュリティだけでセッションを作成し、使用する方法を制御することができ、よりもむしろ制御アプリケーション全体。我々が明示的に指定しない場合は、春のセキュリティは、セッションを作成することはできませんが、セッション作成することができ、当社のアプリケーション(一般的なSpringアプリケーションにおけるセッション管理は春のセッションに引き渡され)!
第二に、セッションタイムアウトの管理
2.1セッションのタイムアウト処理
セッションタイムアウトの後、我々は通常、特定のURL、セッションタイムアウト情報表示にジャンプし適用します。次のコード構成実装を使用することができます。
http.sessionManagement()
.expiredUrl("/sessionExpired.html") //超时session
.invalidSessionUrl("/invalidSession.html"); //非法session
2.2。セッションタイムアウトの設定
春ブートアプリケーションでセッションタイムアウトを設定するには2つの方法があり、春のセキュリティはすなわち、これら二つの方法と完全に互換性がある:セッションタイムアウトユーザーが再度アプリケーションにアクセスするには、ログインする必要がある場合:
- server.servlet.session.timeout = 15メートル
- spring.session.timeout = 15メートル
最初の方法は、第二の方法は、私たちの春のセッション、提供タイムアウト後にセッションを使用することで、springBootアプリケーション来るセッションタイムアウトの設定です。高い優先順位の第二の方法。
第三に、セッション硬化性保護春のセキュリティ
セッション固定の保護、すなわちセッション硬化性保護機能、この機能の目的はある程度とクッキーユーザセッション情報を盗むから不正ユーザーを防ぐため、セッションの動作をシミュレートすることです。
デフォルトでは、春のセキュリティはmigrationSession保護を有効になっています。クッキーの同じユーザSESSIONIDためのものであること、新しいHTTPセッションを作成する各ログオン認証は、古いHTTPセッションが無効となり、古いセッションのプロパティがコピーされます。
http.sessionManagement() .sessionFixation().migrateSession()
これはあなたが望む方法ではありません場合は、2つの他のオプションを使用することができます。
- 「に設定されているなし」、元のセッションは無効ではありません
- セット「newSessionは、後に」クリーンなセッションを作成しますが、古いセッションの属性のいずれかをコピーしません。
四、クッキーのセキュリティ
原則としてお馴染みのセッションの友人は、セッションの安全性を向上させ、それが実際には、クッキーの安全性を向上させる知っている必要があります。春のブート構成ですることによって達成することができます。
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.secure=true
- HTTPのみ:trueの場合、スクリプトは、ブラウザのクッキーにアクセスすることができません
セキュア:trueの場合、クッキーはクッキーを運ぶことができないHTTPS、HTTP経由でのみ接続送信されます。
あなたの注意を楽しみにして
- ブロガーは最近、本を書いた:「手のタッチ手をSpringBootシリーズ章97節を学ぶためにあなたを教えるために-16」
この記事は、再現される(エンはテキストのみをオンにしてはならない)ソースを示す:文字がオフジボ。