0

現在、一部のデータを管理するための 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>

ロールはユーザーに属していないと思いますが、よくわかりません。出来ますか?

私はおそらく何かを忘れましたが、この要素が何であるかわかりません。

誰かが私を助けてくれますか?

4

1 に答える 1

0

Elmah を保護する方法については、これらのリンクを確認してください + 構成は次のようになります

    <elmah>
    <security allowRemoteAccess="true" />
  </elmah>
  <location path="elmah.axd" inheritInChildApplications="false">
    <system.web>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
      <authorization>
        <allow roles="Dev" />
        <deny users="*" />
      </authorization>
      <!-- 
        See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for 
        more information on using ASP.NET authorization securing ELMAH.
      <authorization>
        <allow roles="Dev" />
        <deny users="*" />  
      </authorization>
      -->
    </system.web>

appsetting タグの下。また、正しい値を更新する必要があります

<appSettings>
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.requiresAuthentication" value="true" />
    <add key="elmah.mvc.allowedRoles" value="Dev" />
  </appSettings>
于 2013-01-05T22:02:54.637 に答える