0

これが全体像です

「HttpOnly」を JSESSIONID Cookie に追加したいのですが、これを手動で行いたいのです。つまり、次のことを意味します。

//create a new cookie
StringBuilder updatedCookie = new StringBuilder("JSESSIONID").append("=")
                .append(sessionId).append("; Path=").append("/")
                .append("; HttpOnly");

//save the cookie
response.setHeader("SET-COOKIE", updatedCookie.toString());

これは、すべてのサイトにマップされるサーブレット フィルターで行われます (フィルターの URL パターンは "/*" です)。

  1. このフィルターを 1 回だけ実行するにはどうすればよいですか? つまり、ログイン時、または
  2. リクエストごとに実行して、この Cookie が既にマークされているかどうかを確認し、答えが「はい」の場合はスキップする必要がありますか?

助言がありますか ?

PS:

  1. サーブレット 3.0 にアップグレードするように言わないでください。今はできないからです。
  2. StringBuilder の不適切な使用と変数 sessionId の欠落を無視する
4

1 に答える 1

1

このフィルターを 1 回だけ実行するにはどうすればよいですか? つまり、ログイン時に

ありえない。セッションは事前に作成されている場合があります。

理論的には、あなたの最適な場所は ですが、これではオブジェクトHttpSessionListener#sessionCreated()がまったく提供されないため、迷ってしまいます。HttpServletResponse

リクエストごとに実行して、この Cookie が既にマークされているかどうかを確認し、答えが「はい」の場合はスキップする必要がありますか?

はい。ただし、これは特に安価である必要があります。

于 2011-01-19T16:46:39.897 に答える