0

我目前正在开发一个用于管理某些数据的 Aspnet MVC3 Razor 应用程序。对应用程序的访问由使用表单的身份验证控制。

我使用 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>

此代码允许处于“开发”角色的用户(在我的 aspnet_usersinroles 表中)并拒绝所有其他用户。

但是,如果我使用一个具有此角色的用户登录,则拒绝访问该页面。

如果我允许同一用户使用用户授权(见下文),我可以毫无问题地访问该页面。

<allow users="yohann.pansard@gmail.com"/>

我多次检查了我的 Aspnet_usersinroles 表,一切都很好。

我的 roleManager 看起来不错,因为我在应用程序中使用了这些相同的角色(例如 Role.IsUserInRoles("foo", "reader"))。这是我的角色管理器的配置:

<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 回答