- PR -

自動で関数を実行したい

1
投稿者投稿内容
sandayu
会議室デビュー日: 2005/01/14
投稿数: 14
投稿日時: 2005-02-03 22:51
お世話になっております。sandayuと申します。

ASP.NET(C#) + SqlServerで開発を行っております。
各画面に対して毎回ログインチェック関数を自動で実行する方法はなにかないでしょうか?

処理の流れとして
ログイン画面→ログイン→セッションにIDとパス格納→各画面で毎回DBにたいしてログインチェックを行い、ログインに失敗した場合エラー画面へ転送

ログインしないで直接アクセスしてきた場合も同様です。


全ページのPage_Load()に呼び出しの関数を入れればいいのですが
なるべくしないで自動処理させたいとおもっております。


どなたかご存知のかたいましたらアドバイスよろしくお願いいたします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-02-04 00:36
NAL-6295です。

僕の場合ですが・・・

1.WebFormにはロジックを持たずに外に操作用の抽象クラスを作成します。
2.各ページに共通のロジックは抽象クラスに実装し、各ページ毎に異なるロジックはその抽象クラスを継承したクラスを作成し、そちらに実装します。
3.WebFormのForm_Loadで自分のページの操作用クラスを生成し、自分自身のインスタンスを渡します。

上記の事を行うことで、各WebForm毎の共通部分が重複する事は無くなります。
もちろんイベント関係の処理もすべて操作クラス側で行います。
実際には、楽にするために、もっといろいろとやっているのですが、大まかにはこんな感じです。

たぶん、sandayuさんの要望通りの事が可能になるかと思います。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2005-02-04 08:40
引用:

各画面に対して毎回ログインチェック関数を自動で実行する方法はなにかないでしょうか?


CustomBasePageクラスを作成したらどうでしょうか。

コード:
public class CustomBasePage : System.Web.UI.Page
{
  public CustomBasePage()
  {
  }

  override protected void OnInit(EventArgs e)
  {
    //Always call the base method when override
    // so what it originally did can still happen
    base.OnInit(e);

    //ここに追加したい機能を挿入します。
     
  }
}


CustomBasePageを適用するには

public class WebForm1 : System.Web.UI.Page
を↓に書き換えます。
public class WebForm1 : CustomBasePage

将来、すべてのWebページに機能を追加したいときは、CustomBasePageを変更
するだけでOKです。保守が非常に簡単です。

http://aspalliance.com/63
から引用しました。


_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
sandayu
会議室デビュー日: 2005/01/14
投稿数: 14
投稿日時: 2005-02-04 10:36
NAL-6295さん、Accessさん返信ありがとうございます。


>1.WebFormにはロジックを持たずに外に操作用の抽象クラスを作成します。
>2.各ページに共通のロジックは抽象クラスに実装し、各ページ毎に異なるロジックはその抽>象クラスを継承したクラスを作成し、そちらに実装します。
>3.WebFormのForm_Loadで自分のページの操作用クラスを生成し、自分自身のインスタンスを渡します。


>public class WebForm1 : System.Web.UI.Page
>を↓に書き換えます。
>public class WebForm1 : CustomBasePage


なるほど、中間にクラスをはさんで実行しているのですね、
CustomBasePageのOnInitが対応しやすいようなので
こちらのほうで試してみたいと思います。

ありがとうございました。
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2005-02-04 13:31
すでに解決済みですが。

毎回処理を行うのであれば、HttpModule や Global.asa にイベントを定義するって方法もあります。

参考URL
[ASP.NET]アプリケーション共通のロギングを行うには?(HTTPモジュール編)

1

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