- PR -

ASP.NET2.0で子画面を作ったのですが。

投稿者投稿内容
けいこ
会議室デビュー日: 2006/08/02
投稿数: 5
投稿日時: 2006-08-02 11:53
はじめまして。
ASP.NET2.0(VB.NET)を使っています。
フォーム認証を使っており、親子画面があります。
子画面を表示させた状態で放っておき、セッションのタイムアウトが起きたあとで、子画面を操作させようとすると、ログイン画面にリダイレクトされます。
そうすると、親画面が二つのような状態になってしまいます。
できれば、タイムアウトが起きたあとに子画面を操作しようとした場合には、ログイン画面に行かずに、エラー用のページを表示させるとか、画面が閉じるようにさせるとかして、親画面を二つ表示させないようにしたいのですが、どうしたらできるのでしょうか。
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-02 21:59
 認証画面で、referer や遷移先のページ(リクエスト クエリ)を見て、「親画面」でなければ transfer するなり etc...

で、いけると思います。
「親画面」は、変わらないのですよね?
猫山みやお
大ベテラン
会議室デビュー日: 2004/09/09
投稿数: 119
投稿日時: 2006-08-02 23:26
セッション開始イベントがログイン画面以外で起きたらエラー画面に遷移する、という方法でも出来そうです。

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-03 02:35
子画面を、ログイン画面にリダイレクトさるのから除外しておいて
独自に認証チェックして処理するのもアリかと思いますね。
(ある画面が子画面にも親画面にもなりうる場合は難しいですが。)
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-08-03 10:37
ログイン画面のクライアントスクリプトで
コード:

if (window.name == "子画面を開いたときのtarget名") {
// エラー用のページを表示させるとか、画面が閉じるようにさせるとか
}




[ メッセージ編集済み 編集者: todo 編集日時 2006-08-03 11:20 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-03 12:47
ログイン画面に[ReturnUrl]というQueryStringがわたってくるのでそれを使ってもいいし。

todoさんの方法だと、子画面にも親画面にもなりうるページにも対応できそうですね。
けいこ
会議室デビュー日: 2006/08/02
投稿数: 5
投稿日時: 2006-08-04 10:19
おはようございます。
たくさんのアドバイスありがとうございます。
ログイン画面で、どの画面への遷移を要求されているのかを判定し、子画面だった場合には、エラー画面を表示させようと思います。
この方法は、他のことにも使えそうですね。
・・・テストをするためにセッションタイムアウトの時間を1分に設定したところ、タイムアウト後に画面のボタンを押したりすると、ログイン画面には行かずに、そのページで使われているRequest.〜などのコードのところで、エラーになってしまいました。
(20分等に設定してある時は、エラーも出ず、ログイン画面に遷移します。)
テスト時だけのタイムアウト設定ですが、極端に短い時間に設定したりするのも、いけないのでしょうか。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-04 21:31
引用:
タイムアウト後に画面のボタンを押したりすると、ログイン画面には行かずに、そのページで使われているRequest.〜などのコードのところで、エラーになってしまいました。

どんなコードで、どんなエラーですか?

1分がダメ、ということはないと思います。
Form認証のtimeoutとセッションのtimeoutは別々に設定できた気がするのでそのせいかも。
(セッションが切れた時点でForm認証も切れた気がするんですけどね。。)

スキルアップ/キャリアアップ(JOB@IT)