【Javaバージョン】
1.8
【使用ブラウザ】
IE11
【処理概要】
サーブレットのコントローラで認証処理を行っています。
認証に失敗した場合はCookieを保持させたくないため、expires=0で破棄しています。
Cookieを破棄する理由ですが・・・認証に失敗した場合、認証情報を正しく書き換えて再度認証処理を行っても、前回の認証失敗時のCookieが邪魔をして後続処理でエラーになってしまうためです。
Java
1 // ユーザ情報 userIdはPOSTで飛んでくる 2 User user = UserUtill.getUser(userId); 3 4 // ユーザ情報取得判定 5 if (user == null) { 6 URI uri = uriInfo.getBaseUriBuilder().path("../myPage.html").build(); 7 return Response.temporaryRedirect(uri).cookie(new NewCookie("uid", null, "/", null, "",0, false)) 8 .cookie(new NewCookie("depNo", null, "/", null, "", 0, false)).build(); 9 }
自分のローカル環境のIEで、上記の処理に入るように認証処理を失敗させてから、正しい認証情報に書き換えてから再度認証処理を行うと、確かにCookieの値は保持されずに後続処理が行われました。
しかし、別端末のIE11で全く同じオペレーションを実施すると、後続処理が失敗してしまいます。十中八九Cookieを保持してしまっているからだと思われるのですが、なぜ保持されてしまっているのかがわかりません。ロジックは全く同じものを使用しているので、IEの設定など環境面に起因しているということだけはわかるのですが、根本原因がつかめずにいます。
アプリケーション側のロジックでCookieの有効期限を明示的に0にしているのに、それが効かないことってあるんでしょうか?
アドバイスいただけると幸いです。