どっとねっとふぁん

C# Tips And Samples
in 検索

ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

最新の投稿は、投稿日時: 12-13-2006, 10:15 午後 投稿者: dotot です。スレッドには 7 件の返答があります。
投稿のソート: 前へ 次へ
  •  05-22-2006, 3:35 午後 697

    ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

    こんにちは。
    ASP.NET 2.0のWebアプリケーションにおいて、以下のようなことを実現したいと考えています。

    (構成)
    /WebApp1
        /Admin
           /MasterMaintenance.aspx
          /Login.aspx
          /web.config
       
        /User
           /Login.aspx
           /Register.aspx
          /web.config

       web.config

    (説明)
    WebApp1というサイトに、Adminというディレクトリ、Userというディレクトリがあります。
    それぞれ管理者機能、一般ユーザ機能別に分けています。ログインページも分けています。

    Admin、User共に、自身のフォルダ配下のページ以外アクセスすることはありません。
    このふたつのディレクトリに対して、Forms認証方式でアクセス権制御をしたいのですが、
    Admin/Userディレクトリの直下に配置したweb.configの <authentication mode="Forms"> がエラーになってしまいます。

    (エラー)
    アプリケーション レベルを超えて allowDefinition='MachineToApplication' として登録されているセクションを使うことはできません。
    このエラーは、仮想ディレクトリが IIS でアプリケーションとして構成されなかった場合に発生します。


    (実現したいこと)
    Adminディレクトリ配下のページにアクセスされてチケットがない場合は、
    /Admin/Login.aspxにリダイレクト。
    同様に、Userディレクトリ配下のページにアクセスされてチケットがない場合は、
    /User/Login.aspxにリダイレクトをさせたいのです。

    そもそも、このような設計自体に問題があるのかもしれないですが、
    このように、ひとつのサイト内で複数のチケットを管理するようなケースを経験された方がいたら、アドバイスを頂けませんでしょうか?

    よろしくお願いします。

    Task-64


     

  •  05-23-2006, 11:46 午前 698 返答元: 697

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

    Webアプリケーションに対してどの認証を使うか、という設定はそのWebアプリのトップレベルの
    web.configにしか記述できませんね。
    ただし、利用できるユーザの設定(authorization)はディレクトリ単位で設定することが可能です。

    上記のような場合、私だったら次のような形にします。

    • WebApp1\web.config にForm認証の設定を記述
    • WebApp1\Admin\web.configにAdminのロールをもったユーザのみ接続可能なようにauthorizationを記述
    • WebApp1\User\web.configにUserのロールをもったユーザのみ接続可能なようにauthorizationを記述
    • login.aspxはWebApp1直下に作成
    • AdminとUserそれぞれの直下にDefault.aspxを作成
    • AdminでログインしようとするひとはWebApp1\Adminにアクセス。
      login.aspxでAdminユーザのIDとパスワードを入れるとWebApp1\Admin\Default.aspxが表示される。
    • UserでログインしようとするひとはWebApp1\Userにアクセス。
      login.aspxでUserユーザのIDとパスワードを入れるとWebApp1\User\Default.aspxが表示される。

    ロールを使ってサイトマップのコントロールも可能ですね。
    このあたり、うまくまとめて説明するにはどうしたらいいかなぁ。。。


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
  •  05-26-2006, 6:08 午後 703 返答元: 698

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

     ono wrote:

    Webアプリケーションに対してどの認証を使うか、という設定はそのWebアプリのトップレベルの
    web.configにしか記述できませんね。
    ただし、利用できるユーザの設定(authorization)はディレクトリ単位で設定することが可能です。

    WebApp1\web.config にForm認証の設定を記述
    WebApp1\Admin\web.configにAdminのロールをもったユーザのみ接続可能なようにauthorizationを記述
    WebApp1\User\web.configにUserのロールをもったユーザのみ接続可能なようにauthorizationを記述
    login.aspxはWebApp1直下に作成
    AdminとUserそれぞれの直下にDefault.aspxを作成
    AdminでログインしようとするひとはWebApp1\Adminにアクセス。
    login.aspxでAdminユーザのIDとパスワードを入れるとWebApp1\Admin\Default.aspxが表示される。
    UserでログインしようとするひとはWebApp1\Userにアクセス。
    login.aspxでUserユーザのIDとパスワードを入れるとWebApp1\User\Default.aspxが表示される。

    アドバイス、ありがとうございます。
    (お答えいただいたのに、遅くなってすいません)

    「認証チケットを持っていないユーザをどのディレクトリのログインページに強制リダイレクトさせるか」
    という部分で躓いています。
    <authentication>はアプリケーションルートでしか指定不可であることが影響して、
    loginUrlプロパティをひとつしか指定できないためです。

    /Admin/xxx.aspx にアクセスしてきたユーザは/Admin/Login.aspxへ。
    /User/yyy.aspx にアクセスしてきたユーザは/User/Login.aspxへ。
    このリダイレクトの設定に困っています。

    ・・・なので、次のような方法でやってみようと思います。

    制御したいディレクトリごとにPageクラスを継承したクラスを作る。(AdminであればAdminBasePage.cs)
    それぞれ継承したクラスの中でSession変数、Cookieのいずれかを確認する。
    確認した結果によって、それぞれのログインページにリダイレクトさせる。

    未熟ゆえ、ベストな選択が出来ませんが、
    とりあえず出来そうな方法でやってみます。

    # 同じような要件のアプリを開発している方の参考になるかも・・・なので、結果、報告しますね。

    Task-64

  •  05-26-2006, 6:34 午後 704 返答元: 703

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

    AdminとUserが本当に別々の機能を利用する(Admin権限の人がUserの機能の一部であっても利用しない、Userとしてログインしなおす)というなら、Admin用とUser用にWebアプリケーションを分けてしまうのがよいように思います。
    別々のWebアプリケーションから同じDBを操作することにはなんの問題もないわけですし。

     


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
  •  05-26-2006, 6:48 午後 705 返答元: 704

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

     ono wrote:

    Webアプリケーションを分けてしまうのがよいように思います。


    仰る通りの構成になってます・・・。
    別のアプリケーションがひとつのWebサイトとして入っている状態です。
    (実際にはAdmin、Userのほかにもうひとつあったり。。)

    検討してみます!
    ありがとうございました!

  •  12-05-2006, 9:09 午後 1887 返答元: 704

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

    ono:

    Admin用とUser用にWebアプリケーションを分けてしまうのがよいように思います。同じDBを操作することにはなんの問題もないわけですし。

    初めまして。ASP.NETを使い始めたばかりですが、同じようなことをやってみたいと思っています。

    同じDBを操作して、Webアプリケーションを分けるとは、どうやればよいのでしょうか。初心者にわかるようにどなたかお教えいただければと存じます。

  •  12-06-2006, 10:16 午前 1891 返答元: 1887

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

    Webアプリケーションが別であっても、同じDBを参照するようにDBへのコネクションストリングを設定すれば、同一のデータを操作することになります。

     


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
  •  12-13-2006, 10:15 午後 1944 返答元: 1891

    Re: ASP.NET 2.0 フォーム認証を各ディレクトリで設定する方法について

    ono:

    同じDBを参照するようにDBへのコネクションストリングを設定すれば、

     

    お返事ありがとうございます。こんなに早くお返事をいただけていたとは!

     

    なかなかソフトをいじっている時間がなかったんです。やってみます。

    ありがとうございました!

RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems