現在、一部のデータを管理するための Aspnet MVC3 Razor アプリケーションに取り組んでいます。アプリケーションへのアクセスは、フォームを使用した認証によって制御されます。
2 回目にエラーを処理するために、エラー キャッチに ELMAH を使用します。Elmah は、エラーを確認するために、プロジェクトのルート フォルダーにある elmah.axd モジュールを提供します。
これらのデータは非公開にする必要があるため、web.config ファイルに次のルールを記述しました。
<location path="elmah.axd">
<system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<authorization>
<allow roles="Dev"/>
<deny users="*" />
</authorization>
</system.web>
このコードは、'dev' ロール (私の aspnet_usersinroles テーブル内) のユーザーを許可し、他のすべてのユーザーを拒否します。
ただし、このロールを持つ 1 人のユーザーでサインインすると、ページへのアクセスが拒否されます。
ユーザー認証 (下記参照) を使用して同じユーザーを許可すると、問題なくページにアクセスできます。
<allow users="yohann.pansard@gmail.com"/>
Aspnet_usersinroles テーブルを数回確認しましたが、すべて問題ありません。
アプリケーションで同じロールを使用したため、私の roleManager は適切に見えます (例: Role.IsUserInRoles("foo", "reader"))。これが私のroleManagerの構成です:
<roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="AspNetSqlRoleProvider">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="app_demo" />
</providers>
</roleManager>
ロールはユーザーに属していないと思いますが、よくわかりません。出来ますか?
私はおそらく何かを忘れましたが、この要素が何であるかわかりません。
誰かが私を助けてくれますか?