- PR -

複数ロールを使用するフォーム認証について

1
投稿者投稿内容
わんだらぁ
会議室デビュー日: 2002/09/25
投稿数: 3
投稿日時: 2004-03-10 16:24
会員制オンラインショップみたいなものを、Win2K Server, IIS 5.0
ASP.NET(.NET Framework1.1)で製作しています。
プログラム暦は長いのですが、ASP.NETはOJT中です。
フォーム認証について行き詰まったので、お知恵を拝借できればと思います。

現状ですが、ディレクトリ構成は次の様になっています。
AuthTest
+-admin
+-user
AuthTestがルートで、ここは誰でもアクセスできます。admin,userは
AuthTestのサブディレクトリで、adminのアクセスにはadminロール、
userのアクセスにはuserロールを必要とし、それぞれ別のloginページが
あります。
そこで、web.configを次の様に記述しました。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<!-- 中略 -->
<authentication mode="Forms">
</authentication>
<authorization>
<allow users="*" />
</authorization>
<!-- 中略 -->
</system.web>
<location path="admin">
<system.web>
<authentication mode="Forms">
<forms name="formauth1" loginUrl="adminlogin.aspx" />
</authentication>
<authorization>
<allow roles="admin"/>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="user">
<system.web>
<authentication mode="Forms">
<forms name="formauth2" loginUrl="userlogin.aspx" />
</authentication>
<authorization>
<allow roles="user"/>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>

この状態で、admin以下やuser以下をアクセスしようとすると、
ログイン画面に遷移せず、
「アプリケーション レベルを超えて allowDefinition='MachineToApplication'
として登録されているセクションを使うことはできません」
というエラーになります。

インターネットサービスマネージャーのadmin,userディレクトリの
プロパティで、アプリケーション「AuthTest」として作成すると、
今度はuserlogin.aspxで
「型 'AuthTest.user.userlogin' を読み込めませんでした」
というエラーになり、ここで行き詰まってしまいました。

いろいろと書籍やWeb上で調べたのですが、単純なフォーム認証はともかく
複数のロールを使い分ける場合については、参考になる資料を見つけることが
出来ませんでした。
情報源へのポインタだけでも結構ですので、何かヒントを頂ければ幸いです。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-03-10 16:40
引用:

わんだらぁさんの書き込み (2004-03-10 16:24) より:

AuthTestがルートで、ここは誰でもアクセスできます。admin,userは
AuthTestのサブディレクトリで、adminのアクセスにはadminロール、
userのアクセスにはuserロールを必要とし、それぞれ別のloginページが
あります。


フォーム認証では、ログインページをリソースで分けるようなことは出来ないはずです。同じページで入力項目にロール指定も追加するとか、あるいはアプリケーション自体を分けてしまうとかしか思いつきません。
# フォーム認証の機構自体を自作するってのは置いといて。

> 複数のロールを使い分ける場合については、参考になる資料を見つけることが
> 出来ませんでした。
普通ロールってのはログインしたユーザによって自動的に割り振られるか、またはせいぜいログイン時にどのロールでログインするかも指定する(こちらはあんまり見ないし今一に思いますが)というもので、アクセスしようとしたりソースに対して自動的に必要なロールでログインしようとするっていうのはあんまり見ないような気がします。

で、通常行うパターンではないので標準的な機能としては提供されていない→どうしても必要なら自作するということになります。

> 「アプリケーション レベルを超えて allowDefinition='MachineToApplication'
> として登録されているセクションを使うことはできません」
これは結局、フォーム認証の設定はアプリケーション単位でしか出来ないよって言うエラーです。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2004-03-10 17:42
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_10/idnfw11_10_03.html
この辺を読むといいと思いますよ
わんだらぁ
会議室デビュー日: 2002/09/25
投稿数: 3
投稿日時: 2004-03-10 18:50
なちゃさん、かめたろさん、ありがとうございます。
問題点が判りましたので、今回は管理側を別アプリにすることで
対応したいと思います。
1

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