• ベストアンサー

ログイン後の画面をアドレスバーから来たユーザに見せないようにする

こんばんは。お世話になります。 JSPでログイン画面を作成したのですが、ログイン後のページを、ブラウザのアドレスパーで直接アドレスを打ってきたユーザに表示したくないのですが、どの様にすればよいんでしょうか? セッションを使えばよいと聞いたのですが、どの様に使えばよいのかが分かりません。 どなたか、分かる方ご返事ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • thelma
  • ベストアンサー率66% (20/30)
回答No.4

GETメソッドでユーザ名とパスワードを送ったとしても、それはHttpServletRequest#getParameterで取得することができるだけで、自動的にセッションの属性に追加されるということはないでしょう。 # もちろん、そういうプログラミングをしていなければ、ですが。 getメソッドを拒絶、というのはそれはそれで一つの選択肢となりうると思います。 画面や遷移の作り方とかとの兼ね合いになるだろうと思います。 ちなみに、他人が同じセッションのデータを使われる場合、というのは例えば、前のユーザがブラウザを閉じていない、だとか、URL Rewritingで残ったURLがセッションのタイムアウト前にブラウザの履歴やHTTP Referrerから抜き取られる、というような場合です。 #もちろんそれ以前に、IDとパスワードがアプリケーションから漏れないような配慮も必要ですが。

kamkamkam3
質問者

お礼

どうも、ご回答ありがとうございます。 3度も返事を頂いて、大変感謝です。よほど詳しいのですね。私も早くそのようになりたいです。。 さて、#1に書いていただいた方法ですべてうまくいきました。というか、1通りのやり方を書いていただいたのですね。大変助かりました。 この質問は、ちょっとややこしそうだから、ひょっとしたら解決できないかなぁ?と思っていたのですが、thelmaさんの回答だけで、解決できたので、驚きです。 本当に助かりました。またよろしくお願いします。

その他の回答 (3)

  • watapen
  • ベストアンサー率10% (5/48)
回答No.3

ログインIDとパスワードをgetで送られてくる可能性も考えるとセッションだけでは不十分ですね。 getリクエストを拒絶すればよいのではないでしょうか?

kamkamkam3
質問者

お礼

どうも、ご返事ありがとうございます。 私には、難しい事はわかりませんが、今回の問題は#1さんの回答により解決できました。 watapenさんは、getで送られてくるとまずい事になる...と書いてあるので、form の method を post にしておきました。 どうも、ありがとうございました。またよろしくお願いします。

  • thelma
  • ベストアンサー率66% (20/30)
回答No.2

ごめんなさい。 ANo.#1 ですが、一部書き間違いました。 if (request.getAttribute("user") == null) { の部分ですが、 if (session.getAttribute("user") == null) { が正しいです。失礼しました。

  • thelma
  • ベストアンサー率66% (20/30)
回答No.1

例えば、ログインした時にセッションにユーザ名などのデータを入れておき、セッションにユーザ名が入っていなければ別のページにとばしたりするようなやり方が考えられます。 セッションは、JSPならsessionという宣言済みオブジェクト(requestなどと同じ)がありますので、 session.setAttribute("key", value); で値をセットして、 session.getAttribute("key"); で値を取り出せます。 # サーブレットでは、HttpServletRequest#getSessionでHttpSessionオブジェクトを取り出します。 別のページにとばすには、 response.sendRedirect("url"); request.getRequestDispatcher("path").forward(request, response); などを使えば良いでしょう。 # もしまだご存じでなければ、詳しくはAPIドキュメントを見てください。 原理としては、こういう処理を、JSPの先頭に入れておけばいいかと思います。 if (request.getAttribute("user") == null) { response.sendRedirect("/index.jsp"); return; } 他には、サーブレットフィルタを使う手なんかもありそうですね。

参考URL:
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html
kamkamkam3
質問者

お礼

この回答が、とても役に立ちました。ありがとうございます。

関連するQ&A