DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ログイン画面経由にした場合、遷移後のボタンアクションが機能しない

環境/言語:[ASP.NET 2.0  VisualStudio2005(VB)  SqlServer2008]
分類:[ASP.NET]

皆様

いつも参考にさせていただいております。
ログイン認証画面からの動きに関して、教えて下さい。

ご教示・アドバイスを頂き内容は、
「ログイン画面経由にした場合、遷移後のボタンアクションが機能せず、
 クリックするとログイン画面へ戻ってします」です。

ログイン認証ページを作成し、認証成功後に登録処理画面へ遷移し登録実施する。
といった流れなのですが、ログイン画面経由を取った場合に
認証成功後の画面:登録処理画面内のボタンアクションが機能せず、
ボタンクリック後にサーバ側の処理に移らずログイン画面に戻ってしまいます。

■ログインページはmsdnのサイトみて作成しました。
 ※msdn.microsoft.com/ja-jp/library/cc671418
 ・ユーザ名とパスワードを入力し、DB管理している情報と一致した場合のみ
  各画面へ遷移する。といった感じです。

■ASP.NET側のボタンタグ
ボタンタグは全部で3つありますが、どれも同じ動きをします。
<asp:Button id="addGridBtn" runat="server" Text="追 加"/>
<asp:Button id="clearBtn" runat="server" Text="クリア"/>
<asp:Button id="exceBtn" runat="server" Text="新規登録" Width="90px" Visible="False" />

■VB.NET側のボタン押下処理
1)ログイン画面経由にする為に
 ※Inherits EveryMemberPageを設定してます。
 直接起動する際には
 ※Inherits System.Web.UI.Pageを使用して直接起動しております。
  上記の場合は、問題なく動作いたします。
 
2)登録処理画面のページロード処理も実行されません。
 ※Protected Sub Page_Load1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
3)ボタンアクション処理も実行されません。
 ※Protected Sub exceBtn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles exceBtn.Click

ボタンクリック後にエラー内容などは表示されております。

宜しくお願い致します。
■No27959に返信(はちまきさんの記事)

> ボタンクリック後にエラー内容などは表示されております。
デバッグウィンドウを見た所
'System.Threading.ThreadAbortException' の初回例外が mscorlib.dll で発生しました。
型 'System.Threading.ThreadAbortException' の例外が mscorlib.dll で発生しましたが、ユーザー コード内ではハンドルされませんでした

というメッセージが表示されておりました。
2011/01/07(Fri) 13:59:45 編集(投稿者)

■No27962 に返信(はちまきさんの記事)

ボタンクリック後にサーバ側の処理に移らずログイン画面に戻るということから考えると登録ページ
へのアクセスが承認されないのだと思います。
登録ページへのアクセスが承認されないのはログイン認証がなされていないためなのだと思います。
ログイン認証がなされていないにも関わらずログインページから登録ページに遷移できるのは 
Server.Transfer を使用しているためなのだと思います。
ログイン認証したという情報は Cookie に保持されるものなので認証後にリダイレクトという形
でいったんクライアント側に処理を移す必要があります。Server.Transfer を使用すると
サーバー側のみで処理が行われ認証されていないことになります。

以上は私の妄想です、読み飛ばしていただいて構いません。

ログインページでログインし、登録ページで登録したいというのはわかりました。
しかし、どのようなことをされているのかよくわかりませんでした。
より詳しくお教えいただけないでしょうか。

> ・ユーザ名とパスワードを入力し、DB管理している情報と一致した場合のみ
> 各画面へ遷移する。といった感じです。

各画面への遷移はどのように行っているのですか。

> ■ASP.NET側のボタンタグ
> ボタンタグは全部で3つありますが、どれも同じ動きをします。
> <asp:Button id="addGridBtn" runat="server" Text="追 加"/>
> <asp:Button id="clearBtn" runat="server" Text="クリア"/>
> <asp:Button id="exceBtn" runat="server" Text="新規登録" Width="90px" Visible="False" />

3つのボタンはどのページにあって、なにと同じ動きをするのですか。

> ■VB.NET側のボタン押下処理
> 1)ログイン画面経由にする為に
> ※Inherits EveryMemberPageを設定してます。

EveryMemberPage には、なにを実装しているのですか。

> 直接起動する際には
> ※Inherits System.Web.UI.Pageを使用して直接起動しております。

なにを起動するのですか。

> 上記の場合は、問題なく動作いたします。

上記の場合というのは、なにを指すのですか。
もりお様

 ご教示・アドバイス有難う御座いました。
 分かり難い記述で申し訳御座いません。

 書き込んで頂きました内容を基に確認し、自己解決致しました。

 新たに認証機能を持たせたInherits OrderViewMemberPageを新規作成し
 OrderViewMemberPage.vbの中でログイン認証用IFとし、
 認証がうまく行った際に画面遷移する。流れに致しました。
 
 EveryMemberPage.vb内処理と認証完了後の処理が重なっていた為
 想定外の動きをしていたと思われます。

 認証完了後の画面にてProtected Overrides Sub Page_Loadを実行し
 思い通りの動きをなりました。

 有難う御座いました。


■No27969に返信(もりおさんの記事)
> 2011/01/07(Fri) 13:59:45 編集(投稿者)
>
> ■No27962 に返信(はちまきさんの記事)
>
> ボタンクリック後にサーバ側の処理に移らずログイン画面に戻るということから考えると登録ページ
> へのアクセスが承認されないのだと思います。
> 登録ページへのアクセスが承認されないのはログイン認証がなされていないためなのだと思います。
> ログイン認証がなされていないにも関わらずログインページから登録ページに遷移できるのは
> Server.Transfer を使用しているためなのだと思います。
> ログイン認証したという情報は Cookie に保持されるものなので認証後にリダイレクトという形
> でいったんクライアント側に処理を移す必要があります。Server.Transfer を使用すると
> サーバー側のみで処理が行われ認証されていないことになります。
>
> 以上は私の妄想です、読み飛ばしていただいて構いません。
>
> ログインページでログインし、登録ページで登録したいというのはわかりました。
> しかし、どのようなことをされているのかよくわかりませんでした。
> より詳しくお教えいただけないでしょうか。
>
>>・ユーザ名とパスワードを入力し、DB管理している情報と一致した場合のみ
>>各画面へ遷移する。といった感じです。
>
> 各画面への遷移はどのように行っているのですか。
>
>>■ASP.NET側のボタンタグ
>>ボタンタグは全部で3つありますが、どれも同じ動きをします。
>><asp:Button id="addGridBtn" runat="server" Text="追 加"/>
>><asp:Button id="clearBtn" runat="server" Text="クリア"/>
>><asp:Button id="exceBtn" runat="server" Text="新規登録" Width="90px" Visible="False" />
>
> 3つのボタンはどのページにあって、なにと同じ動きをするのですか。
>
>>■VB.NET側のボタン押下処理
>>1)ログイン画面経由にする為に
>>※Inherits EveryMemberPageを設定してます。
>
> EveryMemberPage には、なにを実装しているのですか。
>
>>直接起動する際には
>>※Inherits System.Web.UI.Pageを使用して直接起動しております。
>
> なにを起動するのですか。
>
>>上記の場合は、問題なく動作いたします。
>
> 上記の場合というのは、なにを指すのですか。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板